diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java index 4e7f6929b5bf..9330f028a553 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java @@ -21,7 +21,6 @@ import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.codeInsight.lookup.TailTypeDecorator; import com.intellij.patterns.ElementPattern; -import static com.intellij.patterns.PlatformPatterns.psiElement; import com.intellij.psi.PsiElement; import com.intellij.util.Icons; import com.intellij.util.ProcessingContext; @@ -32,12 +31,10 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; +import static com.intellij.patterns.PlatformPatterns.psiElement; + /** - * Created by IntelliJ IDEA. - * User: vnikolaenko - * Date: 22.09.2008 - * Time: 12:14:14 - * To change this template use File | Settings | File Templates. + * @author vnikolaenko */ public class RegExpCompletionContributor extends CompletionContributor { private static final Icon emptyIcon = new EmptyIcon(Icons.PROPERTY_ICON.getIconWidth(), Icons.PROPERTY_ICON.getIconHeight()); diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpDocumentationProvider.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpDocumentationProvider.java index 1106b4805b08..eba87b3c1383 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpDocumentationProvider.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpDocumentationProvider.java @@ -26,11 +26,7 @@ import org.intellij.lang.regexp.psi.impl.RegExpPropertyImpl; import org.jetbrains.annotations.Nullable; /** - * Created by IntelliJ IDEA. - * User: vnikolaenko - * Date: 17.09.2008 - * Time: 19:24:29 - * To change this template use File | Settings | File Templates. + * @author vnikolaenko */ public class RegExpDocumentationProvider extends QuickDocumentationProvider { @Override diff --git a/build/lib/gant/lib/jps.jar b/build/lib/gant/lib/jps.jar index 18b2cfe65445..5a618983c636 100644 Binary files a/build/lib/gant/lib/jps.jar and b/build/lib/gant/lib/jps.jar differ diff --git a/images/src/org/intellij/images/actions/ToggleTransparencyChessboardAction.java b/images/src/org/intellij/images/actions/ToggleTransparencyChessboardAction.java index 0fd76172942c..07634679fc41 100644 --- a/images/src/org/intellij/images/actions/ToggleTransparencyChessboardAction.java +++ b/images/src/org/intellij/images/actions/ToggleTransparencyChessboardAction.java @@ -27,12 +27,12 @@ import org.intellij.images.ui.ImageComponentDecorator; */ public final class ToggleTransparencyChessboardAction extends ToggleAction { public boolean isSelected(AnActionEvent e) { - ImageComponentDecorator decorator = (ImageComponentDecorator)e.getDataContext().getData(ImageComponentDecorator.class.getName()); + ImageComponentDecorator decorator = ImageComponentDecorator.DATA_KEY.getData(e.getDataContext()); return decorator != null && decorator.isEnabledForActionPlace(e.getPlace()) && decorator.isTransparencyChessboardVisible(); } public void setSelected(AnActionEvent e, boolean state) { - ImageComponentDecorator decorator = (ImageComponentDecorator)e.getDataContext().getData(ImageComponentDecorator.class.getName()); + ImageComponentDecorator decorator = ImageComponentDecorator.DATA_KEY.getData(e.getDataContext()); if (decorator != null && decorator.isEnabledForActionPlace(e.getPlace())) { decorator.setTransparencyChessboardVisible(state); } @@ -40,7 +40,7 @@ public final class ToggleTransparencyChessboardAction extends ToggleAction { public void update(final AnActionEvent e) { super.update(e); - ImageComponentDecorator decorator = (ImageComponentDecorator)e.getDataContext().getData(ImageComponentDecorator.class.getName()); + ImageComponentDecorator decorator = ImageComponentDecorator.DATA_KEY.getData(e.getDataContext()); e.getPresentation().setEnabled(decorator != null && decorator.isEnabledForActionPlace(e.getPlace())); e.getPresentation().setText(isSelected(e) ? "Hide Chessboard" : "Show Chessboard"); } diff --git a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java index 9a6c8a2cd950..1a93527258d2 100644 --- a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java +++ b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java @@ -73,7 +73,7 @@ final class ImageEditorUI extends JPanel implements DataProvider { final PsiActionSupportFactory factory = PsiActionSupportFactory.getInstance(); copyPasteSupport = factory.createPsiBasedCopyPasteSupport(editor.getProject(), this, new PsiActionSupportFactory.PsiElementSelector() { public PsiElement[] getSelectedElements() { - return (PsiElement[]) getData(DataConstants.PSI_ELEMENT_ARRAY); + return LangDataKeys.PSI_ELEMENT_ARRAY.getData(ImageEditorUI.this); } }); @@ -342,26 +342,26 @@ final class ImageEditorUI extends JPanel implements DataProvider { @Nullable public Object getData(String dataId) { - if (DataConstants.PROJECT.equals(dataId)) { + if (PlatformDataKeys.PROJECT.is(dataId)) { return editor.getProject(); - } else if (DataConstants.VIRTUAL_FILE.equals(dataId)) { + } else if (PlatformDataKeys.VIRTUAL_FILE.is(dataId)) { return editor.getFile(); - } else if (DataConstants.VIRTUAL_FILE_ARRAY.equals(dataId)) { + } else if (PlatformDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { return new VirtualFile[]{editor.getFile()}; - } else if (DataConstants.PSI_FILE.equals(dataId)) { - return getData(DataConstants.PSI_ELEMENT); - } else if (DataConstants.PSI_ELEMENT.equals(dataId)) { + } else if (LangDataKeys.PSI_FILE.is(dataId)) { + return getData(LangDataKeys.PSI_ELEMENT.getName()); + } else if (LangDataKeys.PSI_ELEMENT.is(dataId)) { VirtualFile file = editor.getFile(); return file != null && file.isValid() ? PsiManager.getInstance(editor.getProject()).findFile(file) : null; - } else if (DataConstants.PSI_ELEMENT_ARRAY.equals(dataId)) { - return new PsiElement[]{(PsiElement) getData(DataConstants.PSI_ELEMENT)}; - } else if (DataConstants.COPY_PROVIDER.equals(dataId)) { + } else if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { + return new PsiElement[]{(PsiElement) getData(LangDataKeys.PSI_ELEMENT.getName())}; + } else if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { return copyPasteSupport.getCopyProvider(); - } else if (DataConstants.CUT_PROVIDER.equals(dataId)) { + } else if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) { return copyPasteSupport.getCutProvider(); - } else if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + } else if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { return deleteProvider; - } else if (ImageComponentDecorator.class.getName().equals(dataId)) { + } else if (ImageComponentDecorator.DATA_KEY.is(dataId)) { return editor; } diff --git a/images/src/org/intellij/images/thumbnail/ThumbnailView.java b/images/src/org/intellij/images/thumbnail/ThumbnailView.java index 5f20f1976979..cf0fc5d37b98 100644 --- a/images/src/org/intellij/images/thumbnail/ThumbnailView.java +++ b/images/src/org/intellij/images/thumbnail/ThumbnailView.java @@ -16,6 +16,7 @@ package org.intellij.images.thumbnail; import com.intellij.openapi.Disposable; +import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.intellij.images.ImagesBundle; @@ -28,45 +29,47 @@ import org.jetbrains.annotations.NotNull; * @author Alexey Efimov */ public interface ThumbnailView extends Disposable, ImageComponentDecorator { - String TOOLWINDOW_ID = ImagesBundle.message("thumbnails.toolwindow.name"); + DataKey DATA_KEY = DataKey.create(ThumbnailView.class.getName()); - @NotNull - Project getProject(); + String TOOLWINDOW_ID = ImagesBundle.message("thumbnails.toolwindow.name"); - /** - * Add virtual files to view - * - * @param root Root - */ - void setRoot(@NotNull VirtualFile root); + @NotNull + Project getProject(); - /** - * Return current root - * - * @return Current root - */ - VirtualFile getRoot(); + /** + * Add virtual files to view + * + * @param root Root + */ + void setRoot(@NotNull VirtualFile root); - boolean isRecursive(); + /** + * Return current root + * + * @return Current root + */ + VirtualFile getRoot(); - void setRecursive(boolean recursive); + boolean isRecursive(); - void setSelected(@NotNull VirtualFile file, boolean selected); + void setRecursive(boolean recursive); - boolean isSelected(@NotNull VirtualFile file); + void setSelected(@NotNull VirtualFile file, boolean selected); - @NotNull - VirtualFile[] getSelection(); + boolean isSelected(@NotNull VirtualFile file); - /** - * Scroll to selection. If ToolWindow is not active, then - * it will perform activatation before scroll. - */ - void scrollToSelection(); + @NotNull + VirtualFile[] getSelection(); - void setVisible(boolean visible); + /** + * Scroll to selection. If ToolWindow is not active, then + * it will perform activatation before scroll. + */ + void scrollToSelection(); - boolean isVisible(); + void setVisible(boolean visible); - void activate(); + boolean isVisible(); + + void activate(); } diff --git a/images/src/org/intellij/images/thumbnail/actionSystem/ThumbnailViewActionUtil.java b/images/src/org/intellij/images/thumbnail/actionSystem/ThumbnailViewActionUtil.java index b53040ab543a..bf381dff43ee 100644 --- a/images/src/org/intellij/images/thumbnail/actionSystem/ThumbnailViewActionUtil.java +++ b/images/src/org/intellij/images/thumbnail/actionSystem/ThumbnailViewActionUtil.java @@ -16,7 +16,6 @@ package org.intellij.images.thumbnail.actionSystem; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.Presentation; import org.intellij.images.thumbnail.ThumbnailView; @@ -44,8 +43,7 @@ public final class ThumbnailViewActionUtil { } public static ThumbnailView getThumbnailView(AnActionEvent e) { - DataContext dataContext = e.getDataContext(); - return (ThumbnailView) dataContext.getData(ThumbnailView.class.getName()); + return ThumbnailView.DATA_KEY.getData(e.getDataContext()); } /** diff --git a/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewUI.java b/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewUI.java index 490e742fe47f..2de28dd40660 100644 --- a/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewUI.java +++ b/images/src/org/intellij/images/thumbnail/impl/ThumbnailViewUI.java @@ -90,7 +90,7 @@ final class ThumbnailViewUI extends JPanel implements DataProvider, Disposable { final PsiActionSupportFactory factory = PsiActionSupportFactory.getInstance(); copyPasteSupport = factory.createPsiBasedCopyPasteSupport(thumbnailView.getProject(), this, new PsiActionSupportFactory.PsiElementSelector() { public PsiElement[] getSelectedElements() { - return (PsiElement[]) getData(DataConstants.PSI_ELEMENT_ARRAY); + return (PsiElement[]) getData(LangDataKeys.PSI_ELEMENT_ARRAY.getName()); } }); @@ -410,32 +410,32 @@ final class ThumbnailViewUI extends JPanel implements DataProvider, Disposable { @Nullable public Object getData(String dataId) { - if (DataConstants.PROJECT.equals(dataId)) { + if (PlatformDataKeys.PROJECT.is(dataId)) { return thumbnailView.getProject(); - } else if (DataConstants.VIRTUAL_FILE.equals(dataId)) { + } else if (PlatformDataKeys.VIRTUAL_FILE.is(dataId)) { VirtualFile[] selectedFiles = getSelectedFiles(); return selectedFiles.length > 0 ? selectedFiles[0] : null; - } else if (DataConstants.VIRTUAL_FILE_ARRAY.equals(dataId)) { + } else if (PlatformDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { return getSelectedFiles(); - } else if (DataConstants.PSI_FILE.equals(dataId)) { - return getData(DataConstants.PSI_ELEMENT); - } else if (DataConstants.PSI_ELEMENT.equals(dataId)) { + } else if (LangDataKeys.PSI_FILE.is(dataId)) { + return getData(LangDataKeys.PSI_ELEMENT.getName()); + } else if (LangDataKeys.PSI_ELEMENT.is(dataId)) { VirtualFile[] selectedFiles = getSelectedFiles(); return selectedFiles.length > 0 ? PsiManager.getInstance(thumbnailView.getProject()).findFile(selectedFiles[0]) : null; - } else if (DataConstants.PSI_ELEMENT_ARRAY.equals(dataId)) { + } else if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { return getSelectedElements(); - } else if (DataConstants.NAVIGATABLE.equals(dataId)) { + } else if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { VirtualFile[] selectedFiles = getSelectedFiles(); return new ThumbnailNavigatable(selectedFiles.length > 0 ? selectedFiles[0] : null); - } else if (DataConstants.COPY_PROVIDER.equals(dataId)) { + } else if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { return copyPasteSupport.getCopyProvider(); - } else if (DataConstants.CUT_PROVIDER.equals(dataId)) { + } else if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) { return copyPasteSupport.getCutProvider(); - } else if (DataConstants.PASTE_PROVIDER.equals(dataId)) { + } else if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) { return copyPasteSupport.getPasteProvider(); - } else if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + } else if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { return deleteProvider; - } else if (DataConstants.NAVIGATABLE_ARRAY.equals(dataId)) { + } else if (PlatformDataKeys.NAVIGATABLE_ARRAY.is(dataId)) { VirtualFile[] selectedFiles = getSelectedFiles(); Set navigatables = new HashSet(selectedFiles.length); for (VirtualFile selectedFile : selectedFiles) { @@ -444,9 +444,9 @@ final class ThumbnailViewUI extends JPanel implements DataProvider, Disposable { } } return navigatables.toArray(EMPTY_NAVIGATABLE_ARRAY); - } else if (ThumbnailView.class.getName().equals(dataId)) { + } else if (ThumbnailView.DATA_KEY.is(dataId)) { return thumbnailView; - } else if (ImageComponentDecorator.class.getName().equals(dataId)) { + } else if (ImageComponentDecorator.DATA_KEY.is(dataId)) { return thumbnailView; } @@ -466,7 +466,7 @@ final class ThumbnailViewUI extends JPanel implements DataProvider, Disposable { psiElements.add(element); } } - return psiElements.toArray(PsiElement.EMPTY_ARRAY); + return psiElements.toArray(new PsiElement[psiElements.size()]); } @NotNull diff --git a/images/src/org/intellij/images/ui/ImageComponentDecorator.java b/images/src/org/intellij/images/ui/ImageComponentDecorator.java index a0a711b62c5f..da9ef9215b3a 100644 --- a/images/src/org/intellij/images/ui/ImageComponentDecorator.java +++ b/images/src/org/intellij/images/ui/ImageComponentDecorator.java @@ -15,21 +15,25 @@ */ package org.intellij.images.ui; +import com.intellij.openapi.actionSystem.DataKey; + /** * Image Component manager. It can toggle backround transparency, grid, etc. * * @author Alexey Efimov */ public interface ImageComponentDecorator { - void setTransparencyChessboardVisible(boolean visible); + DataKey DATA_KEY = DataKey.create(ImageComponentDecorator.class.getName()); - boolean isTransparencyChessboardVisible(); + void setTransparencyChessboardVisible(boolean visible); - /** - * Return true if this decorator is enabled for this action place. - * - * @param place Action place - * @return true is decorator is enabled - */ - boolean isEnabledForActionPlace(String place); + boolean isTransparencyChessboardVisible(); + + /** + * Return true if this decorator is enabled for this action place. + * + * @param place Action place + * @return true is decorator is enabled + */ + boolean isEnabledForActionPlace(String place); } diff --git a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java index dbc93a94cb3f..3ecabe8118fe 100644 --- a/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java +++ b/java/compiler/forms-compiler/src/com/intellij/uiDesigner/compiler/InsetsPropertyCodeGenerator.java @@ -15,24 +15,20 @@ */ package com.intellij.uiDesigner.compiler; +import org.objectweb.asm.Type; import org.objectweb.asm.commons.GeneratorAdapter; import org.objectweb.asm.commons.Method; -import org.objectweb.asm.Type; import java.awt.*; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 22.11.2005 - * Time: 17:46:41 - * To change this template use File | Settings | File Templates. + * @author yole */ public class InsetsPropertyCodeGenerator extends PropertyCodeGenerator { private final Type myInsetsType = Type.getType(Insets.class); public void generatePushValue(final GeneratorAdapter generator, final Object value) { - final Insets insets = (Insets) value; + final Insets insets = (Insets)value; generator.newInstance(myInsetsType); generator.dup(); generator.push(insets.top); diff --git a/java/compiler/forms-compiler/testSrc/com/intellij/uiDesigner/core/GridBagConverterTest.java b/java/compiler/forms-compiler/testSrc/com/intellij/uiDesigner/core/GridBagConverterTest.java index 65cd0c6e523f..1785247b0763 100644 --- a/java/compiler/forms-compiler/testSrc/com/intellij/uiDesigner/core/GridBagConverterTest.java +++ b/java/compiler/forms-compiler/testSrc/com/intellij/uiDesigner/core/GridBagConverterTest.java @@ -22,11 +22,7 @@ import javax.swing.*; import java.awt.*; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 23.11.2005 - * Time: 13:47:38 - * To change this template use File | Settings | File Templates. + * @author yole */ public class GridBagConverterTest extends TestCase { /** @@ -892,7 +888,7 @@ public class GridBagConverterTest extends TestCase { assertEquals(100, field3.getHeight()); } - private void applyConversionResults(final JPanel panel, final GridBagConverter converter) { + private static void applyConversionResults(final JPanel panel, final GridBagConverter converter) { GridBagConverter.Result[] results = converter.convert(); for(int i=0; i nodes = new ArrayList(paths.length); + List nodes = new ArrayList(paths.length); for (TreePath path : paths) { Object component = path.getLastPathComponent(); if (component instanceof DebuggerTreeNodeImpl) { - nodes.add(component); + nodes.add((DebuggerTreeNodeImpl) component); } } return nodes.toArray(new DebuggerTreeNodeImpl[nodes.size()]); diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/DebuggerActions.java b/java/debugger/impl/src/com/intellij/debugger/actions/DebuggerActions.java index b8186a2426c1..1220f5c9682b 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/DebuggerActions.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/DebuggerActions.java @@ -20,6 +20,8 @@ */ package com.intellij.debugger.actions; +import com.intellij.debugger.ui.impl.DebuggerTreePanel; +import com.intellij.debugger.ui.impl.watch.DebuggerTree; import com.intellij.xdebugger.impl.actions.XDebuggerActions; import org.jetbrains.annotations.NonNls; @@ -30,8 +32,8 @@ public interface DebuggerActions extends XDebuggerActions { @NonNls String INSPECT_PANEL_POPUP = "Debugger.InspectPanelPopup"; @NonNls String THREADS_PANEL_POPUP = "Debugger.ThreadsPanelPopup"; @NonNls String WATCH_PANEL_POPUP = "Debugger.WatchesPanelPopup"; - @NonNls String DEBUGGER_TREE = "DebuggerTree"; - @NonNls String DEBUGGER_TREE_PANEL = "DebuggerPanel"; + @Deprecated @NonNls String DEBUGGER_TREE = DebuggerTree.DATA_KEY.getName(); + @Deprecated @NonNls String DEBUGGER_TREE_PANEL = DebuggerTreePanel.DATA_KEY.getName(); @NonNls String REMOVE_WATCH = "Debugger.RemoveWatch"; @NonNls String NEW_WATCH = "Debugger.NewWatch"; @NonNls String ADD_TO_WATCH = "Debugger.AddToWatch"; @@ -47,4 +49,4 @@ public interface DebuggerActions extends XDebuggerActions { @NonNls String EXPORT_THREADS = "ExportThreads"; @NonNls String DUMP_THREADS = "DumpThreads"; -} \ No newline at end of file +} diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/EditFrameSourceAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/EditFrameSourceAction.java index 12d89c1947ee..ba02df459449 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/EditFrameSourceAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/EditFrameSourceAction.java @@ -20,11 +20,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.IdeActions; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 14, 2004 - * Time: 11:15:59 AM - * To change this template use File | Settings | File Templates. + * @author lex */ public class EditFrameSourceAction extends GotoFrameSourceAction{ public void update(AnActionEvent e) { diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/FreezeThreadAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/FreezeThreadAction.java index afe367dada11..eb6dea34891c 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/FreezeThreadAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/FreezeThreadAction.java @@ -25,44 +25,45 @@ import com.intellij.debugger.ui.impl.watch.ThreadDescriptorImpl; import com.intellij.openapi.actionSystem.AnActionEvent; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 14, 2004 - * Time: 3:35:58 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public class FreezeThreadAction extends DebuggerAction{ +public class FreezeThreadAction extends DebuggerAction { public void actionPerformed(final AnActionEvent e) { DebuggerTreeNodeImpl[] selectedNode = getSelectedNodes(e.getDataContext()); + if (selectedNode == null) { + return; + } final DebuggerContextImpl debuggerContext = getDebuggerContext(e.getDataContext()); final DebugProcessImpl debugProcess = debuggerContext.getDebugProcess(); - for (int i = 0; i < selectedNode.length; i++) { - final DebuggerTreeNodeImpl debuggerTreeNode = selectedNode[i]; + for (final DebuggerTreeNodeImpl debuggerTreeNode : selectedNode) { ThreadDescriptorImpl threadDescriptor = ((ThreadDescriptorImpl)debuggerTreeNode.getDescriptor()); final ThreadReferenceProxyImpl thread = threadDescriptor.getThreadReference(); - if(!threadDescriptor.isFrozen()) { + if (!threadDescriptor.isFrozen()) { debugProcess.getManagerThread().schedule(new SuspendContextCommandImpl(debuggerContext.getSuspendContext()) { - public void contextAction() throws Exception { - debugProcess.createFreezeThreadCommand(thread).run(); - debuggerTreeNode.calcValue(); - } - }); + public void contextAction() throws Exception { + debugProcess.createFreezeThreadCommand(thread).run(); + debuggerTreeNode.calcValue(); + } + }); } } } public void update(AnActionEvent e) { DebuggerTreeNodeImpl[] selectedNode = getSelectedNodes(e.getDataContext()); + if (selectedNode == null) { + return; + } DebugProcessImpl debugProcess = getDebuggerContext(e.getDataContext()).getDebugProcess(); boolean visible = false; - if(debugProcess != null) { + if (debugProcess != null) { visible = true; - for (int i = 0; i < selectedNode.length; i++) { - NodeDescriptorImpl threadDescriptor = selectedNode[i].getDescriptor(); - if(!(threadDescriptor instanceof ThreadDescriptorImpl) || ((ThreadDescriptorImpl)threadDescriptor).isFrozen()) { + for (DebuggerTreeNodeImpl aSelectedNode : selectedNode) { + NodeDescriptorImpl threadDescriptor = aSelectedNode.getDescriptor(); + if (!(threadDescriptor instanceof ThreadDescriptorImpl) || ((ThreadDescriptorImpl)threadDescriptor).isFrozen()) { visible = false; break; } diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/GotoFrameSourceAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/GotoFrameSourceAction.java index da35e6fab3b2..e13a0eb28564 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/GotoFrameSourceAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/GotoFrameSourceAction.java @@ -24,11 +24,7 @@ import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 14, 2004 - * Time: 10:36:59 AM - * To change this template use File | Settings | File Templates. + * @author lex */ public abstract class GotoFrameSourceAction extends DebuggerAction{ public void actionPerformed(AnActionEvent e) { diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/HotSwapAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/HotSwapAction.java index 77028c3e4a3f..250ae85cf884 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/HotSwapAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/HotSwapAction.java @@ -26,11 +26,7 @@ import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Jun 26, 2003 - * Time: 12:52:01 PM - * To change this template use Options | File Templates. + * @author lex */ public class HotSwapAction extends AnAction{ diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/ToggleFieldBreakpointAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/ToggleFieldBreakpointAction.java index 5900b31b6271..dc3449921fc5 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/ToggleFieldBreakpointAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/ToggleFieldBreakpointAction.java @@ -107,12 +107,12 @@ public class ToggleFieldBreakpointAction extends AnAction { else if(DebuggerAction.isContextView(event)) { presentation.setText(DebuggerBundle.message("action.add.field.watchpoint.text")); Project project = event.getData(PlatformDataKeys.PROJECT); - if(place != null) { + if(project != null && place != null) { Document document = PsiDocumentManager.getInstance(project).getDocument(place.getFile()); if (document != null) { final int offset = place.getOffset(); final BreakpointManager breakpointManager = (DebuggerManagerEx.getInstanceEx(project)).getBreakpointManager(); - final Breakpoint fieldBreakpoint = offset >= 0 ? (FieldBreakpoint)breakpointManager.findBreakpoint(document, offset, FieldBreakpoint.CATEGORY) : null; + final Breakpoint fieldBreakpoint = offset >= 0 ? breakpointManager.findBreakpoint(document, offset, FieldBreakpoint.CATEGORY) : null; if (fieldBreakpoint != null) { presentation.setEnabled(false); return; @@ -147,7 +147,7 @@ public class ToggleFieldBreakpointAction extends AnAction { } if(DebuggerAction.isContextView(event)) { - DebuggerTree tree = (DebuggerTree)dataContext.getData(DebuggerActions.DEBUGGER_TREE); + DebuggerTree tree = DebuggerTree.DATA_KEY.getData(dataContext); if(tree != null && tree.getSelectionPath() != null) { DebuggerTreeNodeImpl node = ((DebuggerTreeNodeImpl)tree.getSelectionPath().getLastPathComponent()); if(node != null && node.getDescriptor() instanceof FieldDescriptorImpl) { @@ -188,4 +188,4 @@ public class ToggleFieldBreakpointAction extends AnAction { return null; } -} \ No newline at end of file +} diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessAdapterImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessAdapterImpl.java index ae4d5d9a7832..709f6da28cb7 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessAdapterImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessAdapterImpl.java @@ -15,17 +15,12 @@ */ package com.intellij.debugger.engine; -import com.intellij.debugger.engine.DebugProcess; import com.intellij.execution.ExecutionException; import com.intellij.execution.configurations.RemoteConnection; import com.intellij.execution.configurations.RunProfileState; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Feb 26, 2004 - * Time: 4:11:18 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class DebugProcessAdapterImpl implements DebugProcessListener { //executed in manager thread diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessEvents.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessEvents.java index cc11ebbbe1b8..62a8f8cb0bce 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessEvents.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessEvents.java @@ -46,11 +46,7 @@ import com.sun.jdi.request.EventRequest; import com.sun.jdi.request.MethodExitRequest; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Feb 25, 2004 - * Time: 4:39:03 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class DebugProcessEvents extends DebugProcessImpl { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.engine.DebugProcessEvents"); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JVMName.java b/java/debugger/impl/src/com/intellij/debugger/engine/JVMName.java index d36b3da7cdc2..9d47e316e2c2 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JVMName.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JVMName.java @@ -16,19 +16,12 @@ package com.intellij.debugger.engine; import com.intellij.debugger.engine.evaluation.EvaluateException; -import com.intellij.debugger.engine.DebugProcess; -import com.intellij.debugger.engine.evaluation.EvaluateException; -import com.intellij.debugger.engine.evaluation.EvaluateException; -import com.intellij.openapi.project.Project; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 2, 2004 - * Time: 3:50:51 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public interface JVMName { String getName(DebugProcessImpl process) throws EvaluateException; + String getDisplayName(DebugProcessImpl debugProcess); } diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java index 7ec1a3f6fb3c..8b8813ebe377 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java @@ -41,11 +41,7 @@ import java.util.Collections; import java.util.List; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 2, 2004 - * Time: 8:33:41 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class PositionManagerImpl implements PositionManager { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.engine.PositionManagerImpl"); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/RemoteStateState.java b/java/debugger/impl/src/com/intellij/debugger/engine/RemoteStateState.java index edb86a4fdf12..4205f24ddeaf 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/RemoteStateState.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/RemoteStateState.java @@ -29,11 +29,7 @@ import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 29, 2004 - * Time: 6:27:18 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class RemoteStateState implements RemoteState { private final Project myProject; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendContextImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendContextImpl.java index 0222caccfa4c..aa5128b9bbab 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendContextImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendContextImpl.java @@ -34,11 +34,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Feb 24, 2004 - * Time: 8:04:50 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public abstract class SuspendContextImpl implements SuspendContext { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.engine.SuspendContextImpl"); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java index 1882f5528319..6acf537430c9 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/SuspendManagerImpl.java @@ -25,18 +25,16 @@ import com.sun.jdi.request.EventRequest; import java.util.*; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Feb 24, 2004 - * Time: 8:04:01 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class SuspendManagerImpl implements SuspendManager { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.engine.SuspendManager"); private final LinkedList myEventContexts = new LinkedList(); - // contexts, paused at breakpoint or another debugger event requests. Note that thread, explicitly paused by user is not considered as - // "paused at breakpoint" and JDI prohibits data queries on its stackframes + /** + * contexts, paused at breakpoint or another debugger event requests. Note that thread, explicitly paused by user is not considered as + * "paused at breakpoint" and JDI prohibits data queries on its stackframes + */ private final LinkedList myPausedContexts = new LinkedList(); private final Set myFrozenThreads = Collections.synchronizedSet(new HashSet()); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/EvaluateRuntimeException.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/EvaluateRuntimeException.java index 2a83a82ae8cd..a5b460cebc5d 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/EvaluateRuntimeException.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/EvaluateRuntimeException.java @@ -15,16 +15,10 @@ */ package com.intellij.debugger.engine.evaluation; -import com.intellij.debugger.engine.evaluation.EvaluateException; - /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Jan 14, 2004 - * Time: 2:18:59 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public class EvaluateRuntimeException extends RuntimeException{ +public class EvaluateRuntimeException extends RuntimeException { public EvaluateRuntimeException(EvaluateException e) { super(e); } diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/EvaluationListener.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/EvaluationListener.java index f6144f3142af..a9bfa83fdade 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/EvaluationListener.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/EvaluationListener.java @@ -20,13 +20,10 @@ import com.intellij.debugger.engine.SuspendContextImpl; import java.util.EventListener; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Feb 3, 2004 - * Time: 7:19:30 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public interface EvaluationListener extends EventListener{ - public void evaluationStarted(SuspendContextImpl context); - public void evaluationFinished(SuspendContextImpl context); +public interface EvaluationListener extends EventListener { + void evaluationStarted(SuspendContextImpl context); + + void evaluationFinished(SuspendContextImpl context); } diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/AssignmentEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/AssignmentEvaluator.java index b1cbe2534eab..9bbdf1a0f89a 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/AssignmentEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/AssignmentEvaluator.java @@ -22,11 +22,7 @@ import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; import com.sun.jdi.*; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Mar 24, 2004 - * Time: 11:10:41 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class AssignmentEvaluator implements Evaluator{ private final Evaluator myLeftEvaluator; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BlockStatementEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BlockStatementEvaluator.java index d68eb235063e..464aa6ea4f35 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BlockStatementEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BlockStatementEvaluator.java @@ -15,19 +15,14 @@ */ package com.intellij.debugger.engine.evaluation.expression; +import com.intellij.debugger.engine.evaluation.EvaluateException; import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; -import com.intellij.debugger.engine.evaluation.EvaluateException; -import com.intellij.debugger.engine.evaluation.EvaluateException; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 20, 2004 - * Time: 5:21:10 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public class BlockStatementEvaluator implements Evaluator{ - protected Evaluator [] myStatements; +public class BlockStatementEvaluator implements Evaluator { + protected Evaluator[] myStatements; public BlockStatementEvaluator(Evaluator[] statements) { myStatements = statements; @@ -35,8 +30,7 @@ public class BlockStatementEvaluator implements Evaluator{ public Object evaluate(EvaluationContextImpl context) throws EvaluateException { Object result = context.getSuspendContext().getDebugProcess().getVirtualMachineProxy().mirrorOf(); - for (int i = 0; i < myStatements.length; i++) { - Evaluator statement = myStatements[i]; + for (Evaluator statement : myStatements) { result = statement.evaluate(context); } return result; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BreakContinueStatementEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BreakContinueStatementEvaluator.java index 40df7ed7189a..e65a3225d2ae 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BreakContinueStatementEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BreakContinueStatementEvaluator.java @@ -18,13 +18,12 @@ package com.intellij.debugger.engine.evaluation.expression; import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 20, 2004 - * Time: 7:27:10 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public abstract class BreakContinueStatementEvaluator implements Evaluator{ +public class BreakContinueStatementEvaluator { + private BreakContinueStatementEvaluator() { + } + public static Evaluator createBreakEvaluator(final String labelName) { return new Evaluator() { public Object evaluate(EvaluationContextImpl context) throws BreakException { diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BreakException.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BreakException.java index 337a9468eca4..24a7fe5f502c 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BreakException.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/BreakException.java @@ -15,15 +15,11 @@ */ package com.intellij.debugger.engine.evaluation.expression; -import com.intellij.debugger.engine.evaluation.EvaluateException; import com.intellij.debugger.DebuggerBundle; +import com.intellij.debugger.engine.evaluation.EvaluateException; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 20, 2004 - * Time: 7:12:47 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class BreakException extends EvaluateException{ private final String myLabelName; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/CodeFragmentEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/CodeFragmentEvaluator.java index 9597b31ee08b..5fb1e8b2823a 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/CodeFragmentEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/CodeFragmentEvaluator.java @@ -15,10 +15,10 @@ */ package com.intellij.debugger.engine.evaluation.expression; +import com.intellij.debugger.DebuggerBundle; import com.intellij.debugger.engine.evaluation.EvaluateException; import com.intellij.debugger.engine.evaluation.EvaluateExceptionUtil; import com.intellij.debugger.jdi.VirtualMachineProxyImpl; -import com.intellij.debugger.DebuggerBundle; import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.containers.HashMap; import com.sun.jdi.Value; @@ -26,11 +26,7 @@ import com.sun.jdi.Value; import java.util.Map; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Mar 24, 2004 - * Time: 10:45:50 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class CodeFragmentEvaluator extends BlockStatementEvaluator{ private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.engine.evaluation.expression.CodeFragmentEvaluator"); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ContinueException.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ContinueException.java index 80caa8d746dc..fd0dff311816 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ContinueException.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ContinueException.java @@ -15,15 +15,11 @@ */ package com.intellij.debugger.engine.evaluation.expression; -import com.intellij.debugger.engine.evaluation.EvaluateException; import com.intellij.debugger.DebuggerBundle; +import com.intellij.debugger.engine.evaluation.EvaluateException; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 20, 2004 - * Time: 7:12:47 PM - * To change this template use File | Settings | File Templates. + * @authorlex */ public class ContinueException extends EvaluateException{ private final String myLabelName; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ForStatementEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ForStatementEvaluator.java index e97072509714..be074474777b 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ForStatementEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ForStatementEvaluator.java @@ -22,11 +22,7 @@ import com.intellij.openapi.util.Comparing; import com.sun.jdi.BooleanValue; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 20, 2004 - * Time: 5:03:47 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class ForStatementEvaluator implements Evaluator { private final Evaluator myInitializationEvaluator; @@ -35,9 +31,13 @@ public class ForStatementEvaluator implements Evaluator { private final Evaluator myBodyEvaluator; private Modifier myModifier; - private final String myLabelName; + private final String myLabelName; - public ForStatementEvaluator(Evaluator initializationEvaluator, Evaluator conditionEvaluator, Evaluator updateEvaluator, Evaluator bodyEvaluator, String labelName) { + public ForStatementEvaluator(Evaluator initializationEvaluator, + Evaluator conditionEvaluator, + Evaluator updateEvaluator, + Evaluator bodyEvaluator, + String labelName) { myInitializationEvaluator = initializationEvaluator; myConditionEvaluator = conditionEvaluator; myUpdateEvaluator = updateEvaluator; @@ -51,19 +51,20 @@ public class ForStatementEvaluator implements Evaluator { public Object evaluate(EvaluationContextImpl context) throws EvaluateException { Object value = context.getDebugProcess().getVirtualMachineProxy().mirrorOf(); - if(myInitializationEvaluator != null) { + if (myInitializationEvaluator != null) { value = myInitializationEvaluator.evaluate(context); myModifier = myInitializationEvaluator.getModifier(); } - for (;;) { - if(myConditionEvaluator != null) { + while (true) { + if (myConditionEvaluator != null) { value = myConditionEvaluator.evaluate(context); myModifier = myConditionEvaluator.getModifier(); - if(!(value instanceof BooleanValue)) { + if (!(value instanceof BooleanValue)) { throw EvaluateExceptionUtil.BOOLEAN_EXPECTED; - } else { - if(!((BooleanValue)value).booleanValue()) { + } + else { + if (!((BooleanValue)value).booleanValue()) { break; } } @@ -73,19 +74,23 @@ public class ForStatementEvaluator implements Evaluator { myBodyEvaluator.evaluate(context); } catch (BreakException e) { - if(Comparing.equal(e.getLabelName(), myLabelName)) { + if (Comparing.equal(e.getLabelName(), myLabelName)) { break; - } else + } + else { throw e; + } } catch (ContinueException e) { - if(Comparing.equal(e.getLabelName(), myLabelName)) { + if (Comparing.equal(e.getLabelName(), myLabelName)) { //continue; - } else + } + else { throw e; + } } - if(myUpdateEvaluator != null) { + if (myUpdateEvaluator != null) { value = myUpdateEvaluator.evaluate(context); myModifier = myUpdateEvaluator.getModifier(); } diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/IfStatementEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/IfStatementEvaluator.java index 8a73bf6c1c34..a13cdd432e1c 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/IfStatementEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/IfStatementEvaluator.java @@ -15,18 +15,13 @@ */ package com.intellij.debugger.engine.evaluation.expression; -import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; +import com.intellij.debugger.engine.evaluation.EvaluateException; import com.intellij.debugger.engine.evaluation.EvaluateExceptionUtil; -import com.intellij.debugger.engine.evaluation.EvaluateException; -import com.intellij.debugger.engine.evaluation.EvaluateException; +import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; import com.sun.jdi.BooleanValue; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 20, 2004 - * Time: 5:03:47 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class IfStatementEvaluator implements Evaluator { private final Evaluator myConditionEvaluator; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/MapStack.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/MapStack.java deleted file mode 100644 index 4e35e79dd24e..000000000000 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/MapStack.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.debugger.engine.evaluation.expression; - -import com.intellij.openapi.diagnostic.Logger; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; - -/** - * Created by IntelliJ IDEA. - * User: lex - * Date: Mar 24, 2004 - * Time: 10:36:12 PM - * To change this template use File | Settings | File Templates. - */ -public class MapStack { - private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.engine.evaluation.expression.MapStack"); - - private final LinkedList> myStack; - - public MapStack() { - myStack = new LinkedList>(); - push(); - } - - public void push(){ - myStack.addFirst(new HashMap()); - } - - public void pop(){ - myStack.removeFirst(); - LOG.assertTrue(myStack.size() > 0); - } - - private HashMap current() { - return myStack.getFirst(); - } - - public void put(Key key, Value value) { - current().put(key, value); - } - - public boolean containsKey(Key key){ - for (Iterator> iterator = myStack.iterator(); iterator.hasNext();) { - HashMap hashMap = iterator.next(); - if(hashMap.containsKey(key))return true; - } - return false; - } - - public Value get(Key key) { - for (Iterator> iterator = myStack.iterator(); iterator.hasNext();) { - HashMap hashMap = iterator.next(); - Value value = hashMap.get(key); - if(value != null) return value; - } - return null; - } -} diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/PostfixOperationEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/PostfixOperationEvaluator.java index f5e0fa3d2304..e4ee8c5a0d3e 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/PostfixOperationEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/PostfixOperationEvaluator.java @@ -23,11 +23,7 @@ import com.sun.jdi.Value; import org.jetbrains.annotations.NonNls; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 20, 2004 - * Time: 5:34:50 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class PostfixOperationEvaluator implements Evaluator{ private final Evaluator myOperandEvaluator; diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/SyntheticVariableEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/SyntheticVariableEvaluator.java index 23bd6df7555e..e96884cd0398 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/SyntheticVariableEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/SyntheticVariableEvaluator.java @@ -18,18 +18,13 @@ package com.intellij.debugger.engine.evaluation.expression; import com.intellij.debugger.engine.evaluation.EvaluateException; import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; import com.intellij.debugger.ui.impl.watch.NodeDescriptorImpl; -import com.intellij.debugger.ui.impl.watch.NodeManagerImpl; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.sun.jdi.Type; import com.sun.jdi.Value; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Mar 25, 2004 - * Time: 2:53:29 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class SyntheticVariableEvaluator implements Evaluator{ private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.engine.evaluation.expression.SyntheticVariableEvaluator"); diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/WhileStatementEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/WhileStatementEvaluator.java index a9bc631f79e6..73a143ce1148 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/WhileStatementEvaluator.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/WhileStatementEvaluator.java @@ -22,11 +22,7 @@ import com.intellij.openapi.util.Comparing; import com.sun.jdi.BooleanValue; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 20, 2004 - * Time: 5:03:47 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class WhileStatementEvaluator implements Evaluator { private final Evaluator myConditionEvaluator; @@ -45,12 +41,13 @@ public class WhileStatementEvaluator implements Evaluator { public Object evaluate(EvaluationContextImpl context) throws EvaluateException { Object value; - for (;;) { + while (true) { value = myConditionEvaluator.evaluate(context); - if(!(value instanceof BooleanValue)) { + if (!(value instanceof BooleanValue)) { throw EvaluateExceptionUtil.BOOLEAN_EXPECTED; - } else { - if(!((BooleanValue)value).booleanValue()) { + } + else { + if (!((BooleanValue)value).booleanValue()) { break; } } @@ -58,16 +55,17 @@ public class WhileStatementEvaluator implements Evaluator { myBodyEvaluator.evaluate(context); } catch (BreakException e) { - if(Comparing.equal(e.getLabelName(), myLabelName)) { + if (Comparing.equal(e.getLabelName(), myLabelName)) { break; - } else + } + else { throw e; + } } catch (ContinueException e) { - if(Comparing.equal(e.getLabelName(), myLabelName)) { - continue; - } else + if (!Comparing.equal(e.getLabelName(), myLabelName)) { throw e; + } } } diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/events/DebuggerCommandImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/events/DebuggerCommandImpl.java index d0ce0c115b67..038ff6db1b2a 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/events/DebuggerCommandImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/events/DebuggerCommandImpl.java @@ -18,11 +18,7 @@ package com.intellij.debugger.engine.events; import com.intellij.debugger.impl.DebuggerTaskImpl; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Mar 5, 2004 - * Time: 6:04:07 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public abstract class DebuggerCommandImpl extends DebuggerTaskImpl { protected abstract void action() throws Exception; diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerTask.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerTask.java index 6467c4373f55..81639f2003c5 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerTask.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerTask.java @@ -16,14 +16,12 @@ package com.intellij.debugger.impl; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 7, 2004 - * Time: 2:40:47 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public interface DebuggerTask extends PrioritizedTask{ +public interface DebuggerTask extends PrioritizedTask { void release(); + void hold(); + void waitFor(); } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerTaskImpl.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerTaskImpl.java index 7a0efd894d07..03cda8d8e839 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerTaskImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerTaskImpl.java @@ -16,11 +16,7 @@ package com.intellij.debugger.impl; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Feb 27, 2004 - * Time: 12:56:52 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public abstract class DebuggerTaskImpl implements DebuggerTask { private boolean myOnHold = false; diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/EventQueueClosedException.java b/java/debugger/impl/src/com/intellij/debugger/impl/EventQueueClosedException.java index 6410b7ee49db..be0cd485b30b 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/EventQueueClosedException.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/EventQueueClosedException.java @@ -16,11 +16,7 @@ package com.intellij.debugger.impl; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Feb 19, 2004 - * Time: 8:48:37 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public class EventQueueClosedException extends Exception{ +public class EventQueueClosedException extends Exception { } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/InvokeAndWaitThread.java b/java/debugger/impl/src/com/intellij/debugger/impl/InvokeAndWaitThread.java index d88a62adb425..3278e59f1764 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/InvokeAndWaitThread.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/InvokeAndWaitThread.java @@ -15,23 +15,19 @@ */ package com.intellij.debugger.impl; - - /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Feb 24, 2004 - * Time: 3:27:55 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public abstract class InvokeAndWaitThread extends InvokeThread{ +public abstract class InvokeAndWaitThread extends InvokeThread { public InvokeAndWaitThread() { super(); } - //Do not remove this code - //Otherwise it will be impossible to override schedule method + /** + * !!! Do not remove this code !!! + * Otherwise it will be impossible to override schedule method + */ public void schedule(E e) { super.schedule(e); } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/InvokeThread.java b/java/debugger/impl/src/com/intellij/debugger/impl/InvokeThread.java index d17f14a45e76..b041959ed403 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/InvokeThread.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/InvokeThread.java @@ -22,11 +22,7 @@ import com.sun.jdi.VMDisconnectedException; import java.util.concurrent.*; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Mar 19, 2004 - * Time: 11:42:03 AM - * To change this template use File | Settings | File Templates. + * @author lex */ public abstract class InvokeThread { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.impl.InvokeThread"); @@ -47,7 +43,7 @@ public abstract class InvokeThread { try { wait(); } - catch (InterruptedException e) { + catch (InterruptedException ignore) { } } } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/ReloadClassesWorker.java b/java/debugger/impl/src/com/intellij/debugger/impl/ReloadClassesWorker.java index 350fc81ebc30..7145ea99a359 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/ReloadClassesWorker.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/ReloadClassesWorker.java @@ -33,15 +33,12 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.io.IOException; +import java.util.HashMap; import java.util.List; import java.util.Map; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Mar 10, 2004 - * Time: 7:12:57 PM - * To change this template use File | Settings | File Templates. + * @author lex */ class ReloadClassesWorker { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.impl.ReloadClassesWorker"); @@ -62,10 +59,6 @@ class ReloadClassesWorker { return myDebuggerSession.getProcess(); } - private Project getProject() { - return myDebuggerSession.getProject(); - } - private void processException(Throwable e) { if (e.getMessage() != null) { myProgress.addMessage(myDebuggerSession, MessageCategory.ERROR, e.getMessage()); @@ -120,7 +113,7 @@ class ReloadClassesWorker { virtualMachineProxy.suspend(); try { - final Map redefineMap = new java.util.HashMap(); + final Map redefineMap = new HashMap(); int processedClassesCount = 0; final IOException[] _ex = new IOException[] {null}; for (final String qualifiedName : modifiedClasses.keySet()) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerEditorImpl.java b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerEditorImpl.java index ca8cb5167e5d..a5329014a881 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerEditorImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerEditorImpl.java @@ -34,11 +34,7 @@ import java.util.ArrayList; import java.util.List; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 12, 2004 - * Time: 2:46:02 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public abstract class DebuggerEditorImpl extends CompletionEditor{ private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.ui.DebuggerEditorImpl"); @@ -86,7 +82,9 @@ public abstract class DebuggerEditorImpl extends CompletionEditor{ if (document != null) { PsiDocumentManager.getInstance(project).commitDocument(document); PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(document); - return createText(psiFile.getText(), ((JavaCodeFragment)psiFile).importsToString()); + if (psiFile != null) { + return createText(psiFile.getText(), ((JavaCodeFragment)psiFile).importsToString()); + } } return createText(""); diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerStatementEditor.java b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerStatementEditor.java index 54f25204b1a9..4b5d2c73cd27 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerStatementEditor.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/DebuggerStatementEditor.java @@ -37,11 +37,7 @@ import java.util.List; import java.util.ListIterator; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 12, 2004 - * Time: 2:39:17 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class DebuggerStatementEditor extends DebuggerEditorImpl { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.ui.DebuggerStatementEditor"); diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/StatementEvaluationDialog.java b/java/debugger/impl/src/com/intellij/debugger/ui/StatementEvaluationDialog.java index fe35ba2a7306..f90764a55b30 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/StatementEvaluationDialog.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/StatementEvaluationDialog.java @@ -46,11 +46,7 @@ import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 12, 2004 - * Time: 4:28:52 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class StatementEvaluationDialog extends EvaluationDialog{ private final JPanel myPanel; @@ -79,7 +75,7 @@ public class StatementEvaluationDialog extends EvaluationDialog{ splitter.setFirstComponent(editorPanel); - final EvaluationDialog.MyEvaluationPanel evaluationPanel = getEvaluationPanel(); + final MyEvaluationPanel evaluationPanel = getEvaluationPanel(); final JPanel ep = new JPanel(new BorderLayout()); final JLabel resultLabel = new JLabel(DebuggerBundle.message("label.evaluate.dialog.result")); ep.add(resultLabel, BorderLayout.NORTH); @@ -166,6 +162,9 @@ public class StatementEvaluationDialog extends EvaluationDialog{ private void updateSwitchButton(Document document) { PsiDocumentManager.getInstance(getProject()).commitDocument(document); PsiFile psiFile = PsiDocumentManager.getInstance(getProject()).getPsiFile(document); + if (psiFile == null) { + return; + } PsiElement[] children = psiFile.getChildren(); int nonWhite = 0; for (PsiElement child : children) { @@ -215,7 +214,7 @@ public class StatementEvaluationDialog extends EvaluationDialog{ private class SwitchAction extends AbstractAction { public SwitchAction() { - putValue(Action.NAME, DebuggerBundle.message("action.evaluate.statement.dialog.switch.mode.description")); + putValue(NAME, DebuggerBundle.message("action.evaluate.statement.dialog.switch.mode.description")); } public void actionPerformed(ActionEvent e) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java index 269d8ce89e18..2e140372077c 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreePanel.java @@ -24,10 +24,7 @@ import com.intellij.debugger.impl.DebuggerSession; import com.intellij.debugger.impl.DebuggerStateManager; import com.intellij.debugger.ui.impl.watch.DebuggerTree; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.ActionPopupMenu; -import com.intellij.openapi.actionSystem.CustomShortcutSet; -import com.intellij.openapi.actionSystem.DataProvider; -import com.intellij.openapi.actionSystem.Shortcut; +import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; @@ -39,6 +36,8 @@ import java.awt.*; import java.awt.event.KeyEvent; public abstract class DebuggerTreePanel extends UpdatableDebuggerView implements DataProvider { + public static final DataKey DATA_KEY = DataKey.create("DebuggerPanel"); + protected final DebuggerTree myTree; public DebuggerTreePanel(Project project, DebuggerStateManager stateManager) { @@ -101,7 +100,7 @@ public abstract class DebuggerTreePanel extends UpdatableDebuggerView implements } public Object getData(String dataId) { - if (DebuggerActions.DEBUGGER_TREE_PANEL.equals(dataId)) { + if (DebuggerTreePanel.DATA_KEY.is(dataId)) { return this; } return null; diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/ThreadsPanel.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/ThreadsPanel.java index c4a08b26e6a0..e63cd8f42886 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/ThreadsPanel.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/ThreadsPanel.java @@ -28,7 +28,7 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.ActionPopupMenu; import com.intellij.openapi.actionSystem.DefaultActionGroup; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NonNls; @@ -72,7 +72,7 @@ public class ThreadsPanel extends DebuggerTreePanel{ } public Object getData(String dataId) { - if (DataConstantsEx.HELP_ID.equals(dataId)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return HELP_ID; } return super.getData(dataId); @@ -86,4 +86,4 @@ public class ThreadsPanel extends DebuggerTreePanel{ public ThreadsDebuggerTree getThreadsTree() { return (ThreadsDebuggerTree) getTree(); } -} \ No newline at end of file +} diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/TipManager.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/TipManager.java index fec8ee4b2583..721d287833db 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/TipManager.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/TipManager.java @@ -38,11 +38,7 @@ import java.awt.*; import java.awt.event.*; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Jan 29, 2004 - * Time: 4:23:11 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class TipManager implements Disposable, PopupMenuListener { @@ -53,7 +49,7 @@ public class TipManager implements Disposable, PopupMenuListener { private MouseEvent myLastMouseEvent; - public static interface TipFactory { + public interface TipFactory { JComponent createToolTip (MouseEvent e); MouseEvent createTooltipEvent(MouseEvent candiateEvent); boolean isFocusOwner(); @@ -152,8 +148,8 @@ public class TipManager implements Disposable, PopupMenuListener { private boolean isInsideComponent(final MouseEvent e) { final Rectangle compBounds = myComponent.getBounds(); final Point compPoint = SwingUtilities.convertPoint(e.getComponent(), e.getPoint(), myComponent); - final boolean insideCoponent = compBounds.contains(compPoint); - return insideCoponent; + + return compBounds.contains(compPoint); } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/VariablesPanel.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/VariablesPanel.java index 26972b427535..5250b408d575 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/VariablesPanel.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/VariablesPanel.java @@ -58,7 +58,7 @@ public class VariablesPanel extends DebuggerTreePanel implements DataProvider{ } public Object getData(String dataId) { - if (DataConstants.HELP_ID.equals(dataId)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return HELP_ID; } return super.getData(dataId); @@ -69,4 +69,4 @@ public class VariablesPanel extends DebuggerTreePanel implements DataProvider{ return (FrameDebuggerTree) getTree(); } -} \ No newline at end of file +} diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/WatchPanel.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/WatchPanel.java index 60e2f35d1bae..e0564ac1c7be 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/WatchPanel.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/WatchPanel.java @@ -30,7 +30,7 @@ import com.intellij.debugger.ui.impl.watch.DebuggerTreeNodeImpl; import com.intellij.debugger.ui.impl.watch.WatchItemDescriptor; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.ActionPopupMenu; -import com.intellij.openapi.actionSystem.DataConstants; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NonNls; @@ -71,7 +71,7 @@ public abstract class WatchPanel extends DebuggerTreePanel { } public Object getData(String dataId) { - if (DataConstants.HELP_ID.equals(dataId)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return HELP_ID; } return super.getData(dataId); @@ -80,4 +80,4 @@ public abstract class WatchPanel extends DebuggerTreePanel { public WatchDebuggerTree getWatchTree() { return (WatchDebuggerTree) getTree(); } -} \ No newline at end of file +} diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DebuggerTree.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DebuggerTree.java index b3f3393156ea..c2a42eb2e3fb 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DebuggerTree.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/DebuggerTree.java @@ -22,7 +22,6 @@ package com.intellij.debugger.ui.impl.watch; import com.intellij.debugger.DebuggerBundle; import com.intellij.debugger.DebuggerInvocationUtil; -import com.intellij.debugger.actions.DebuggerActions; import com.intellij.debugger.engine.DebugProcessImpl; import com.intellij.debugger.engine.evaluation.EvaluateException; import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; @@ -44,6 +43,7 @@ import com.intellij.debugger.ui.tree.NodeDescriptor; import com.intellij.debugger.ui.tree.render.ChildrenBuilder; import com.intellij.debugger.ui.tree.render.NodeRenderer; import com.intellij.debugger.ui.tree.render.NodeRendererSettingsListener; +import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; @@ -67,6 +67,8 @@ public abstract class DebuggerTree extends DebuggerTreeBase implements DataProvi private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.ui.impl.watch.DebuggerTree"); protected static final Key VISIBLE_RECT = Key.create("VISIBLE_RECT"); + public static final DataKey DATA_KEY = DataKey.create("DebuggerTree"); + private final Project myProject; protected final NodeManagerImpl myNodeManager; @@ -182,7 +184,7 @@ public abstract class DebuggerTree extends DebuggerTreeBase implements DataProvi } public Object getData(String dataId) { - if (DebuggerActions.DEBUGGER_TREE.equals(dataId)) { + if (DebuggerTree.DATA_KEY.is(dataId)) { return this; } return null; @@ -705,4 +707,4 @@ public abstract class DebuggerTree extends DebuggerTreeBase implements DataProvi public void hideTooltip() { myTipManager.hideTooltip(); } -} \ No newline at end of file +} diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/EvaluationDescriptor.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/EvaluationDescriptor.java index 20905ce4a113..da78e13ce48e 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/EvaluationDescriptor.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/EvaluationDescriptor.java @@ -42,11 +42,7 @@ import org.jetbrains.annotations.Nullable; import java.util.List; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 12, 2004 - * Time: 5:24:17 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public abstract class EvaluationDescriptor extends ValueDescriptorImpl{ private Modifier myModifier; diff --git a/java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java b/java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java index 3ee119ab1f7a..c0f0bfede608 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java +++ b/java/debugger/openapi/src/com/intellij/debugger/DebuggerManager.java @@ -25,30 +25,29 @@ import com.intellij.psi.PsiClass; import com.intellij.util.Function; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 29, 2004 - * Time: 6:33:26 PM - * To change this template use File | Settings | File Templates. + * @author lex */ -public abstract class DebuggerManager implements ProjectComponent, JDOMExternalizable{ +public abstract class DebuggerManager implements ProjectComponent, JDOMExternalizable { public static DebuggerManager getInstance(Project project) { return project.getComponent(DebuggerManager.class); } public abstract DebugProcess getDebugProcess(ProcessHandler processHandler); - public abstract void addDebugProcessListener (ProcessHandler processHandler, DebugProcessListener listener); + public abstract void addDebugProcessListener(ProcessHandler processHandler, DebugProcessListener listener); + public abstract void removeDebugProcessListener(ProcessHandler processHandler, DebugProcessListener listener); public abstract boolean isDebuggerManagerThread(); - + public abstract void addClassNameMapper(NameMapper mapper); + public abstract void removeClassNameMapper(NameMapper mapper); - - public abstract String getVMClassQualifiedName(PsiClass aClass); - - public abstract void registerPositionManagerFactory(Function factory); + + public abstract String getVMClassQualifiedName(PsiClass aClass); + + public abstract void registerPositionManagerFactory(Function factory); + public abstract void unregisterPositionManagerFactory(Function factory); - + } diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/DebugProcess.java b/java/debugger/openapi/src/com/intellij/debugger/engine/DebugProcess.java index 7d15ce9c419a..bca8159ee988 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/DebugProcess.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/DebugProcess.java @@ -32,11 +32,7 @@ import org.jetbrains.annotations.NotNull; import java.util.List; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 2, 2004 - * Time: 7:17:18 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public interface DebugProcess { @NonNls String JAVA_STRATUM = "Java"; diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/evaluation/EvaluateExceptionUtil.java b/java/debugger/openapi/src/com/intellij/debugger/engine/evaluation/EvaluateExceptionUtil.java index ad3a6590e408..dff6dc30575b 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/evaluation/EvaluateExceptionUtil.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/evaluation/EvaluateExceptionUtil.java @@ -19,11 +19,7 @@ import com.intellij.debugger.DebuggerBundle; import com.sun.jdi.*; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 8, 2004 - * Time: 4:38:36 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public class EvaluateExceptionUtil { public static final EvaluateException INCONSISTEND_DEBUG_INFO = createEvaluateException(DebuggerBundle.message("evaluation.error.inconsistent.debug.info")); @@ -38,6 +34,9 @@ public class EvaluateExceptionUtil { public static final EvaluateException THREAD_WAS_RESUMED = createEvaluateException(DebuggerBundle.message("evaluation.error.thread.resumed")); public static final EvaluateException DEBUG_INFO_UNAVAILABLE = createEvaluateException(DebuggerBundle.message("evaluation.error.debug.info.unavailable")); + private EvaluateExceptionUtil() { + } + public static EvaluateException createEvaluateException(Throwable th) { return createEvaluateException(null, th); } diff --git a/java/debugger/openapi/src/com/intellij/debugger/engine/jdi/VirtualMachineProxy.java b/java/debugger/openapi/src/com/intellij/debugger/engine/jdi/VirtualMachineProxy.java index 04031f70dc20..4f4cb8243652 100644 --- a/java/debugger/openapi/src/com/intellij/debugger/engine/jdi/VirtualMachineProxy.java +++ b/java/debugger/openapi/src/com/intellij/debugger/engine/jdi/VirtualMachineProxy.java @@ -21,11 +21,7 @@ import com.sun.jdi.ReferenceType; import java.util.List; /** - * Created by IntelliJ IDEA. - * User: lex - * Date: Apr 2, 2004 - * Time: 8:49:42 PM - * To change this template use File | Settings | File Templates. + * @author lex */ public interface VirtualMachineProxy { List allClasses(); diff --git a/java/idea-ui/src/com/intellij/ide/actions/ShowModulePropertiesAction.java b/java/idea-ui/src/com/intellij/ide/actions/ShowModulePropertiesAction.java index 75a5c584770e..1fa86ffb55f9 100644 --- a/java/idea-ui/src/com/intellij/ide/actions/ShowModulePropertiesAction.java +++ b/java/idea-ui/src/com/intellij/ide/actions/ShowModulePropertiesAction.java @@ -15,10 +15,7 @@ */ package com.intellij.ide.actions; -import com.intellij.openapi.actionSystem.AnAction; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.DataConstants; -import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ui.configuration.ModulesConfigurator; @@ -31,11 +28,11 @@ public class ShowModulePropertiesAction extends AnAction{ public void actionPerformed(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); - final Project project = (Project)dataContext.getData(DataConstants.PROJECT); + final Project project = PlatformDataKeys.PROJECT.getData(dataContext); if (project == null) { return; } - final Module module = (Module)dataContext.getData(DataConstants.MODULE_CONTEXT); + final Module module = LangDataKeys.MODULE_CONTEXT.getData(dataContext); if (module == null) { return; } @@ -45,8 +42,8 @@ public class ShowModulePropertiesAction extends AnAction{ public void update(AnActionEvent e) { super.update(e); final DataContext dataContext = e.getDataContext(); - final Project project = (Project)dataContext.getData(DataConstants.PROJECT); - final Module module = (Module)dataContext.getData(DataConstants.MODULE_CONTEXT); + final Project project = PlatformDataKeys.PROJECT.getData(dataContext); + final Module module = LangDataKeys.MODULE_CONTEXT.getData(dataContext); e.getPresentation().setVisible(project != null && module != null); } } diff --git a/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteGroupHeader.java b/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteGroupHeader.java index d97140aec6ac..4640d69bbb59 100644 --- a/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteGroupHeader.java +++ b/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteGroupHeader.java @@ -158,7 +158,7 @@ public class PaletteGroupHeader extends JCheckBox implements DataProvider { @Nullable public Object getData(String dataId) { Object data = myPaletteWindow.getData(dataId); if (data != null) return data; - Project project = (Project)myPaletteWindow.getData(DataConstants.PROJECT); + Project project = PlatformDataKeys.PROJECT.getData(myPaletteWindow); return myGroup.getData(project, dataId); } diff --git a/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteWindow.java b/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteWindow.java index ccaf067a6b06..7ee8a74ec77a 100644 --- a/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteWindow.java +++ b/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteWindow.java @@ -45,7 +45,7 @@ public class PaletteWindow extends JPanel implements DataProvider { private final Project myProject; private final ArrayList myGroupHeaders = new ArrayList(); private final PaletteItemProvider[] myProviders; - private final PaletteWindow.MyPropertyChangeListener myPropertyChangeListener = new MyPropertyChangeListener(); + private final MyPropertyChangeListener myPropertyChangeListener = new MyPropertyChangeListener(); private final Set myGroups = new HashSet(); private final JTabbedPane myTabbedPane = new JTabbedPane(); private final JScrollPane myScrollPane = new JScrollPane(); @@ -190,10 +190,10 @@ public class PaletteWindow extends JPanel implements DataProvider { } @Nullable public Object getData(String dataId) { - if (dataId.equals(DataConstants.HELP_ID)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return ourHelpID; } - if (dataId.equals(DataConstants.PROJECT)) { + if (PlatformDataKeys.PROJECT.is(dataId)) { return myProject; } PaletteItem item = getActiveItem(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ClasspathPanel.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ClasspathPanel.java index 1ccc733676aa..45e052fe2d02 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ClasspathPanel.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ClasspathPanel.java @@ -1065,7 +1065,7 @@ public class ClasspathPanel extends JPanel { private static FileChooserDescriptor createFileChooserDescriptor(Component parent) { final FileChooserDescriptor descriptor = new FileChooserDescriptor(false, true, true, false, false, true); - final Module contextModule = (Module)DataManager.getInstance().getDataContext(parent).getData(DataConstants.MODULE_CONTEXT); + final Module contextModule = LangDataKeys.MODULE_CONTEXT.getData(DataManager.getInstance().getDataContext(parent)); descriptor.putUserData(LangDataKeys.MODULE_CONTEXT, contextModule); return descriptor; } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModuleEditor.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModuleEditor.java index 02a10416ee55..57d9f5fdaa31 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModuleEditor.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModuleEditor.java @@ -17,8 +17,8 @@ package com.intellij.openapi.roots.ui.configuration; import com.intellij.facet.impl.ProjectFacetsConfigurator; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleConfigurationEditor; @@ -556,7 +556,7 @@ public abstract class ModuleEditor implements Place.Navigator, Disposable { } public Object getData(String dataId) { - if (dataId.equals(DataConstants.MODULE_CONTEXT)) { + if (LangDataKeys.MODULE_CONTEXT.is(dataId)) { return getModule(); } return null; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/actions/NewModuleInGroupAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/actions/NewModuleInGroupAction.java index ed54db5fa713..68f24603774e 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/actions/NewModuleInGroupAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/actions/NewModuleInGroupAction.java @@ -18,7 +18,6 @@ package com.intellij.openapi.roots.ui.configuration.actions; import com.intellij.ide.projectView.impl.ModuleGroup; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataKeys; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.impl.ModuleManagerImpl; @@ -29,7 +28,7 @@ public class NewModuleInGroupAction extends NewModuleAction { @Override public void update(final AnActionEvent e) { super.update(e); - final ModuleGroup[] moduleGroups = (ModuleGroup[])e.getDataContext().getData(DataConstantsEx.MODULE_GROUP_ARRAY); + final ModuleGroup[] moduleGroups = ModuleGroup.ARRAY_DATA_KEY.getData(e.getDataContext()); final Module[] modules = e.getData(DataKeys.MODULE_CONTEXT_ARRAY); e.getPresentation().setVisible((moduleGroups != null && moduleGroups.length > 0) || (modules != null && modules.length > 0)); @@ -37,7 +36,7 @@ public class NewModuleInGroupAction extends NewModuleAction { @Override protected Object prepareDataFromContext(final AnActionEvent e) { - final ModuleGroup[] moduleGroups = (ModuleGroup[])e.getDataContext().getData(DataConstantsEx.MODULE_GROUP_ARRAY); + final ModuleGroup[] moduleGroups = ModuleGroup.ARRAY_DATA_KEY.getData(e.getDataContext()); if (moduleGroups != null && moduleGroups.length > 0) { return moduleGroups [0]; } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/FacetStructureConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/FacetStructureConfigurable.java index 16f9c4c26676..625b217f6458 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/FacetStructureConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/FacetStructureConfigurable.java @@ -43,7 +43,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.awt.*; import java.util.*; +import java.util.List; /** * @author nik @@ -238,7 +240,7 @@ public class FacetStructureConfigurable extends BaseStructureConfigurable { } public String getHelpTopic() { - final Object component = DataManager.getInstance().getDataContext().getData(DataKeys.CONTEXT_COMPONENT.getName()); + final Component component = DataKeys.CONTEXT_COMPONENT.getData(DataManager.getInstance().getDataContext()); if (myTree.equals(component)) { final NamedConfigurable selectedConfugurable = getSelectedConfugurable(); if (selectedConfugurable instanceof FacetTypeConfigurable) { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ModuleStructureConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ModuleStructureConfigurable.java index c1c07dd69cc2..bc784b5e00a8 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ModuleStructureConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ModuleStructureConfigurable.java @@ -28,7 +28,6 @@ import com.intellij.ide.util.projectWizard.ModuleBuilder; import com.intellij.ide.util.projectWizard.NamePathComponent; import com.intellij.ide.util.projectWizard.ProjectWizardUtil; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; @@ -47,7 +46,10 @@ import com.intellij.openapi.roots.ui.configuration.ClasspathEditor; import com.intellij.openapi.roots.ui.configuration.ModuleEditor; import com.intellij.openapi.roots.ui.configuration.ModulesConfigurator; import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable; -import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.*; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.LibraryProjectStructureElement; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ModuleProjectStructureElement; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureDaemonAnalyzer; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureElement; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.NamedConfigurable; @@ -565,7 +567,7 @@ public class ModuleStructureConfigurable extends BaseStructureConfigurable imple if (DataKeys.MODULE_CONTEXT.is(dataId)){ return getSelectedModule(); } - if (DataConstantsEx.MODIFIABLE_MODULE_MODEL.equals(dataId)){ + if (LangDataKeys.MODIFIABLE_MODULE_MODEL.is(dataId)){ return myContext.myModulesConfigurator.getModuleModel(); } diff --git a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypeInfo.java b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypeInfo.java index e425e7040821..457ef1fc6c33 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ExpectedTypeInfo.java +++ b/java/java-impl/src/com/intellij/codeInsight/ExpectedTypeInfo.java @@ -20,11 +20,7 @@ import com.intellij.psi.PsiType; import org.jetbrains.annotations.NotNull; /** - * Created by IntelliJ IDEA. - * User: ven - * Date: Jul 14, 2004 - * Time: 4:45:46 PM - * To change this template use File | Settings | File Templates. + * @author ven */ public interface ExpectedTypeInfo { int TYPE_STRICTLY = 0; @@ -35,19 +31,19 @@ public interface ExpectedTypeInfo { PsiMethod getCalledMethod(); @NotNull - PsiType getType (); + PsiType getType(); - PsiType getDefaultType (); + PsiType getDefaultType(); int getKind(); - boolean equals (ExpectedTypeInfo info); + boolean equals(ExpectedTypeInfo info); String toString(); ExpectedTypeInfo[] intersect(ExpectedTypeInfo info); - boolean isArrayTypeInfo (); + boolean isArrayTypeInfo(); TailType getTailType(); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java index 5ad495a6360b..46680732f465 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java @@ -186,24 +186,29 @@ public class HighlightMethodUtil { PsiMethod method = methodSignature.getMethod(); for (MethodSignatureBackedByPsiMethod superMethodSignature : superMethodSignatures) { PsiMethod superMethod = superMethodSignature.getMethod(); - // strange things happen when super method is from Object and method from interface - if (superMethod.hasModifierProperty(PsiModifier.FINAL)) { - String message = JavaErrorMessages.message("final.method.override", - HighlightUtil.formatMethod(method), - HighlightUtil.formatMethod(superMethod), - HighlightUtil.formatClass(superMethod.getContainingClass())); - TextRange textRange = HighlightNamesUtil.getMethodDeclarationTextRange(method); - HighlightInfo errorResult = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, - textRange, - message); - IntentionAction fix = QUICK_FIX_FACTORY.createModifierListFix(superMethod, PsiModifier.FINAL, false, true); - QuickFixAction.registerQuickFixAction(errorResult, fix); - return errorResult; - } + HighlightInfo info = checkSuperMethodIsFinal(method, superMethod); + if (info != null) return info; } return null; } + private static HighlightInfo checkSuperMethodIsFinal(PsiMethod method, PsiMethod superMethod) { + // strange things happen when super method is from Object and method from interface + if (superMethod.hasModifierProperty(PsiModifier.FINAL)) { + String message = JavaErrorMessages.message("final.method.override", + HighlightUtil.formatMethod(method), + HighlightUtil.formatMethod(superMethod), + HighlightUtil.formatClass(superMethod.getContainingClass())); + TextRange textRange = HighlightNamesUtil.getMethodDeclarationTextRange(method); + HighlightInfo errorResult = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR, + textRange, + message); + IntentionAction fix = QUICK_FIX_FACTORY.createModifierListFix(superMethod, PsiModifier.FINAL, false, true); + QuickFixAction.registerQuickFixAction(errorResult, fix); + return errorResult; + } + return null; + } public static HighlightInfo checkMethodIncompatibleThrows(MethodSignatureBackedByPsiMethod methodSignature, List superMethodSignatures, @@ -822,19 +827,24 @@ public class HighlightMethodUtil { ? null : MethodSignatureUtil.findMethodBySignature(superClass, method, true); - HighlightInfo highlightInfo = checkStaticMethodOverride(aClass, method, superClass, superMethod); + boolean isStatic = method.hasModifierProperty(PsiModifier.STATIC); + HighlightInfo highlightInfo = checkStaticMethodOverride(aClass, method, isStatic,superClass, superMethod); if (highlightInfo != null) return highlightInfo; + if (!isStatic) { + // all methods in interface are instance, so no possible errors in this case + return null; + } PsiClass[] interfaces = aClass.getInterfaces(); for (PsiClass aInterfaces : interfaces) { - superClass = aInterfaces; - superMethod = MethodSignatureUtil.findMethodBySignature(superClass, method, true); - highlightInfo = checkStaticMethodOverride(aClass, method, superClass, superMethod); - if (highlightInfo != null) return highlightInfo; - } - return highlightInfo; + superClass = aInterfaces; + superMethod = MethodSignatureUtil.findMethodBySignature(superClass, method, true); + highlightInfo = checkStaticMethodOverride(aClass, method, true, superClass, superMethod); + if (highlightInfo != null) return highlightInfo; + } + return null; } - private static HighlightInfo checkStaticMethodOverride(PsiClass aClass, PsiMethod method, PsiClass superClass, PsiMethod superMethod) { + private static HighlightInfo checkStaticMethodOverride(PsiClass aClass, PsiMethod method, boolean isMethodStatic, PsiClass superClass, PsiMethod superMethod) { if (superMethod == null) return null; PsiManager manager = superMethod.getManager(); PsiModifierList superModifierList = superMethod.getModifierList(); @@ -844,7 +854,6 @@ public class HighlightMethodUtil { && !JavaPsiFacade.getInstance(manager.getProject()).arePackagesTheSame(aClass, superClass)) { return null; } - boolean isMethodStatic = modifierList.hasModifierProperty(PsiModifier.STATIC); boolean isSuperMethodStatic = superModifierList.hasModifierProperty(PsiModifier.STATIC); if (isMethodStatic != isSuperMethodStatic) { TextRange textRange = HighlightNamesUtil.getMethodDeclarationTextRange(method); @@ -876,6 +885,8 @@ public class HighlightMethodUtil { String accessModifier = PsiUtil.getAccessModifier(accessLevel); HighlightInfo info = isWeaker(method, modifierList, accessModifier, accessLevel, superMethod, true); if (info != null) return info; + info = checkSuperMethodIsFinal(method, superMethod); + if (info != null) return info; } return null; } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 1884d46fd5a3..2702e4528645 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -23,21 +23,18 @@ package com.intellij.codeInsight.daemon.impl.analysis; import com.intellij.codeInsight.ExceptionUtil; import com.intellij.codeInsight.daemon.JavaErrorMessages; -import com.intellij.codeInsight.daemon.QuickFixActionRegistrar; import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.codeInsight.daemon.impl.HighlightInfoType; import com.intellij.codeInsight.daemon.impl.quickfix.*; import com.intellij.codeInsight.highlighting.HighlightUsagesDescriptionLocation; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInsight.intention.QuickFixFactory; -import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider; import com.intellij.codeInsight.quickfix.ChangeVariableTypeQuickFixProvider; +import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider; import com.intellij.lang.StdLanguages; import com.intellij.lang.findUsages.LanguageFindUsages; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; -import com.intellij.openapi.project.DumbAware; -import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Key; @@ -1873,17 +1870,8 @@ public class HighlightUtil { if (PsiUtil.isInsideJavadocComment(ref)) return null; HighlightInfo info = HighlightInfo.createHighlightInfo(type, refName, description); - QuickFixActionRegistrar registrar = new QuickFixActionRegistrarImpl(info); - - final boolean dumb = DumbService.getInstance(ref.getProject()).isDumb(); - UnresolvedReferenceQuickFixProvider[] fixProviders = Extensions.getExtensions(UnresolvedReferenceQuickFixProvider.EXTENSION_NAME); - for (UnresolvedReferenceQuickFixProvider each : fixProviders) { - if (dumb && !(each instanceof DumbAware)) { - continue; - } - each.registerFixes(ref, registrar); - } + UnresolvedReferenceQuickFixProvider.registerReferenceFixes(ref, new QuickFixActionRegistrarImpl(info)); return info; } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DefaultQuickFixProvider.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DefaultQuickFixProvider.java index f8f7ec256651..8f27e8c151a2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DefaultQuickFixProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DefaultQuickFixProvider.java @@ -22,8 +22,9 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; +import org.jetbrains.annotations.NotNull; -public class DefaultQuickFixProvider implements UnresolvedReferenceQuickFixProvider{ +public class DefaultQuickFixProvider extends UnresolvedReferenceQuickFixProvider { public void registerFixes(PsiJavaCodeReferenceElement ref, QuickFixActionRegistrar registrar) { registrar.register(new ImportClassFix(ref)); registrar.register(SetupJDKFix.getInstnace()); @@ -60,4 +61,9 @@ public class DefaultQuickFixProvider implements UnresolvedReferenceQuickFixProvi registrar.register(new CreateInnerClassFromUsageFix(ref, CreateClassKind.CLASS)); } } + + @NotNull + public Class getReferenceClass() { + return PsiJavaCodeReferenceElement.class; + } } \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java index a5d1ea164e74..3b9f9633b698 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java @@ -99,6 +99,7 @@ public class ModifierFix extends IntentionAndQuickFixAction { return myModifierList != null && myModifierList.isValid() && myModifierList.getManager().isInProject(myModifierList) && + myModifierList.hasModifierProperty(myModifier) != myShouldHave && (myVariable == null || myVariable.isValid()); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveClassToModuleFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveClassToModuleFix.java index 66b378c368d5..354685a58b6b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveClassToModuleFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveClassToModuleFix.java @@ -22,7 +22,7 @@ import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.ide.DataManager; import com.intellij.ide.util.PackageUtil; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.impl.SimpleDataContext; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.module.Module; @@ -43,6 +43,9 @@ import org.jetbrains.annotations.NotNull; * @author cdr */ public class MoveClassToModuleFix { + private MoveClassToModuleFix() { + } + public static void registerFixes(QuickFixActionRegistrar registrar, final PsiJavaCodeReferenceElement reference) { final PsiElement psiElement = reference.getElement(); @NonNls final String referenceName = reference.getRangeInElement().substring(psiElement.getText()); @@ -102,8 +105,11 @@ public class MoveClassToModuleFix { DataManager dataManager = DataManager.getInstance(); DataContext dataContext = dataManager.getDataContext(); PsiDirectory directory = PackageUtil.findOrCreateDirectoryForPackage(currentModule, packageName, sourceRoot, true); - DataContext context = SimpleDataContext.getSimpleContext(DataConstantsEx.TARGET_PSI_ELEMENT, directory, dataContext); + DataContext context = SimpleDataContext.getSimpleContext(LangDataKeys.TARGET_PSI_ELEMENT.getName(), directory, dataContext); String qualifiedName = aClass.getQualifiedName(); + if (qualifiedName == null) { + return; + } moveHandler.invoke(project, new PsiElement[]{aClass}, context); PsiReference reference = file.findReferenceAt(editor.getCaretModel().getOffset()); PsiClass newClass = JavaPsiFacade.getInstance(project).findClass(qualifiedName, GlobalSearchScope.moduleScope(currentModule)); diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/MissingForeachBodyFixer.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/MissingForeachBodyFixer.java index 5ca384ec26a4..807043331c77 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/MissingForeachBodyFixer.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/MissingForeachBodyFixer.java @@ -15,18 +15,14 @@ */ package com.intellij.codeInsight.editorActions.smartEnter; -import com.intellij.psi.*; -import com.intellij.psi.util.PsiTreeUtil; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; +import com.intellij.psi.*; +import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Jul 5, 2004 - * Time: 8:44:32 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class MissingForeachBodyFixer implements Fixer { public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException { diff --git a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/AnnotationParameterInfoHandler.java b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/AnnotationParameterInfoHandler.java index 7ff5fe9cb4ac..bbd0c485137d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/AnnotationParameterInfoHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/AnnotationParameterInfoHandler.java @@ -15,20 +15,16 @@ */ package com.intellij.codeInsight.hint.api.impls; +import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.lang.parameterInfo.*; import com.intellij.psi.*; import com.intellij.util.text.CharArrayUtil; -import com.intellij.codeInsight.lookup.LookupElement; import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Feb 1, 2006 - * Time: 3:16:16 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class AnnotationParameterInfoHandler implements ParameterInfoHandler { public @Nullable Object[] getParametersForLookup(LookupElement item, ParameterInfoContext context) { diff --git a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/ReferenceParameterInfoHandler.java b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/ReferenceParameterInfoHandler.java index 6df6a9bc418d..301d74869396 100644 --- a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/ReferenceParameterInfoHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/ReferenceParameterInfoHandler.java @@ -15,22 +15,18 @@ */ package com.intellij.codeInsight.hint.api.impls; +import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.lang.parameterInfo.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.util.Function; -import com.intellij.codeInsight.lookup.LookupElement; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.util.Arrays; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Feb 1, 2006 - * Time: 3:16:09 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class ReferenceParameterInfoHandler implements ParameterInfoHandler { public Object[] getParametersForLookup(final LookupElement item, final ParameterInfoContext context) { diff --git a/java/java-impl/src/com/intellij/codeInsight/template/impl/TextExpression.java b/java/java-impl/src/com/intellij/codeInsight/template/impl/TextExpression.java index 982c3a680d11..78055b3dc7a8 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/impl/TextExpression.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/impl/TextExpression.java @@ -22,11 +22,7 @@ import com.intellij.codeInsight.template.Result; import com.intellij.codeInsight.template.TextResult; /** - * Created by IntelliJ IDEA. - * User: Maxim - * Date: Nov 7, 2006 - * Time: 12:17:39 AM - * To change this template use File | Settings | File Templates. + * @author Maxim */ public class TextExpression extends Expression { private final String myString; diff --git a/java/java-impl/src/com/intellij/codeInsight/template/macro/AnnotatedMacro.java b/java/java-impl/src/com/intellij/codeInsight/template/macro/AnnotatedMacro.java index eca2fae104ec..48b968b3eae1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/macro/AnnotatedMacro.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/macro/AnnotatedMacro.java @@ -19,6 +19,7 @@ package com.intellij.codeInsight.template.macro; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.codeInsight.template.*; +import com.intellij.openapi.project.Project; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiManager; @@ -28,17 +29,14 @@ import com.intellij.psi.search.searches.AnnotatedMembersSearch; import com.intellij.util.Query; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.LinkedHashSet; import java.util.Set; /** -* Created by IntelliJ IDEA. -* User: Maxim.Mossienko -* Date: 11.06.2009 -* Time: 0:20:54 -* To change this template use File | Settings | File Templates. -*/ + * @author Maxim.Mossienko + */ public class AnnotatedMacro implements Macro { @NonNls @@ -55,7 +53,8 @@ public class AnnotatedMacro implements Macro { return ""; } - private Query findAnnotated(ExpressionContext context, Expression[] params) { + @Nullable + private static Query findAnnotated(ExpressionContext context, Expression[] params) { if (params == null || params.length == 0) return null; PsiManager instance = PsiManager.getInstance(context.getProject()); @@ -94,8 +93,10 @@ public class AnnotatedMacro implements Macro { Set set = new LinkedHashSet(); final String secondParamValue = params.length > 1 ? params[1].calculateResult(context).toString() : null; final boolean isShortName = secondParamValue != null && !Boolean.valueOf(secondParamValue); - final PsiClass findInClass = - secondParamValue != null ? JavaPsiFacade.getInstance(context.getProject()).findClass(secondParamValue) : null; + final Project project = context.getProject(); + final PsiClass findInClass = secondParamValue != null + ? JavaPsiFacade.getInstance(project).findClass(secondParamValue, GlobalSearchScope.allScope(project)) + : null; for (PsiMember object : query.findAll()) { if (findInClass != null && !object.getContainingClass().equals(findInClass)) continue; diff --git a/java/java-impl/src/com/intellij/codeInspection/dataFlow/ControlFlow.java b/java/java-impl/src/com/intellij/codeInspection/dataFlow/ControlFlow.java index 38f199306aaa..cfd4d0816797 100644 --- a/java/java-impl/src/com/intellij/codeInspection/dataFlow/ControlFlow.java +++ b/java/java-impl/src/com/intellij/codeInspection/dataFlow/ControlFlow.java @@ -92,10 +92,6 @@ public class ControlFlow { myFields = fields; } - public void dump(PrintStream p) { - p.println(toString()); - } - public String toString() { StringBuilder result = new StringBuilder(); diff --git a/java/java-impl/src/com/intellij/cyclicDependencies/actions/CyclicDependenciesAction.java b/java/java-impl/src/com/intellij/cyclicDependencies/actions/CyclicDependenciesAction.java index 880e2f57027a..b1765a431d5c 100644 --- a/java/java-impl/src/com/intellij/cyclicDependencies/actions/CyclicDependenciesAction.java +++ b/java/java-impl/src/com/intellij/cyclicDependencies/actions/CyclicDependenciesAction.java @@ -48,7 +48,7 @@ public class CyclicDependenciesAction extends AnAction{ public void update(AnActionEvent event) { Presentation presentation = event.getPresentation(); presentation.setEnabled( - getInspectionScope(event.getDataContext()) != null || event.getDataContext().getData(DataConstants.PSI_FILE) != null); + getInspectionScope(event.getDataContext()) != null || event.getData(LangDataKeys.PSI_FILE) != null); } public void actionPerformed(AnActionEvent e) { @@ -82,7 +82,7 @@ public class CyclicDependenciesAction extends AnAction{ } - private AnalysisScope getInspectionScope(final DataContext dataContext) { + private static AnalysisScope getInspectionScope(final DataContext dataContext) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); if (project == null) return null; @@ -91,19 +91,19 @@ public class CyclicDependenciesAction extends AnAction{ return scope != null && scope.getScopeType() != AnalysisScope.INVALID ? scope : null; } - private AnalysisScope getInspectionScopeImpl(DataContext dataContext) { + private static AnalysisScope getInspectionScopeImpl(DataContext dataContext) { //Possible scopes: package, project, module. Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext); if (projectContext != null) { return new AnalysisScope(projectContext); } - Module moduleContext = (Module)dataContext.getData(DataConstants.MODULE_CONTEXT); + Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext); if (moduleContext != null) { return new AnalysisScope(moduleContext); } - Module [] modulesArray = (Module[])dataContext.getData(DataConstants.MODULE_CONTEXT_ARRAY); + Module [] modulesArray = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext); if (modulesArray != null) { return new AnalysisScope(modulesArray); } @@ -117,7 +117,7 @@ public class CyclicDependenciesAction extends AnAction{ else if (psiTarget instanceof PsiPackage) { PsiPackage pack = (PsiPackage)psiTarget; PsiDirectory[] dirs = pack.getDirectories(GlobalSearchScope.projectScope(pack.getProject())); - if (dirs == null || dirs.length == 0) return null; + if (dirs.length == 0) return null; return new JavaAnalysisScope(pack, LangDataKeys.MODULE.getData(dataContext)); } else if (psiTarget != null){ return null; @@ -127,12 +127,20 @@ public class CyclicDependenciesAction extends AnAction{ return getProjectScope(dataContext); } - private AnalysisScope getProjectScope(DataContext dataContext) { - return new AnalysisScope(PlatformDataKeys.PROJECT.getData(dataContext)); + private static AnalysisScope getProjectScope(DataContext dataContext) { + final Project data = PlatformDataKeys.PROJECT.getData(dataContext); + if (data == null) { + return null; + } + return new AnalysisScope(data); } - private AnalysisScope getModuleScope(DataContext dataContext) { - return new AnalysisScope(LangDataKeys.MODULE.getData(dataContext)); + private static AnalysisScope getModuleScope(DataContext dataContext) { + final Module data = LangDataKeys.MODULE.getData(dataContext); + if (data == null) { + return null; + } + return new AnalysisScope(data); } private class ProjectModuleOrPackageDialog extends DialogWrapper { diff --git a/java/java-impl/src/com/intellij/cyclicDependencies/ui/CyclicDependenciesPanel.java b/java/java-impl/src/com/intellij/cyclicDependencies/ui/CyclicDependenciesPanel.java index 8b0856484f3a..f9539ab1a8a0 100644 --- a/java/java-impl/src/com/intellij/cyclicDependencies/ui/CyclicDependenciesPanel.java +++ b/java/java-impl/src/com/intellij/cyclicDependencies/ui/CyclicDependenciesPanel.java @@ -388,7 +388,7 @@ public class CyclicDependenciesPanel extends JPanel implements Disposable, DataP @Nullable @NonNls public Object getData(@NonNls String dataId) { - if (dataId.equals(DataConstants.HELP_ID)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return "dependency.viewer.tool.window"; } return null; @@ -497,7 +497,7 @@ public class CyclicDependenciesPanel extends JPanel implements Disposable, DataP private static class MyTree extends Tree implements DataProvider { public Object getData(String dataId) { PackageDependenciesNode node = getSelectedNode(); - if (DataConstants.NAVIGATABLE.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { return node; } return null; diff --git a/java/java-impl/src/com/intellij/ide/JavaDataAccessors.java b/java/java-impl/src/com/intellij/ide/JavaDataAccessors.java deleted file mode 100644 index c6835e9d2c6f..000000000000 --- a/java/java-impl/src/com/intellij/ide/JavaDataAccessors.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.ide; - -import com.intellij.psi.*; -import com.intellij.openapi.actionSystem.DataContext; - -public class JavaDataAccessors { - public static final DataAccessor FILE_PACKAGE = new DataAccessor() { - public PsiPackage getImpl(DataContext dataContext) throws NoDataException { - PsiFile psiFile = DataAccessors.PSI_FILE.getNotNull(dataContext); - PsiDirectory containingDirectory = psiFile.getContainingDirectory(); - if (containingDirectory == null || !containingDirectory.isValid()) return null; - return JavaDirectoryService.getInstance().getPackage(containingDirectory); - } - }; - public static final DataAccessor PSI_JAVA_FILE = DataAccessor.SubClassDataAccessor.create(DataAccessors.PSI_FILE, PsiJavaFile.class); - - private JavaDataAccessors() { - } -} diff --git a/java/java-impl/src/com/intellij/ide/favoritesTreeView/PsiPackageFavoriteNodeProvider.java b/java/java-impl/src/com/intellij/ide/favoritesTreeView/PsiPackageFavoriteNodeProvider.java index 38fd94258880..df799d33f8b5 100644 --- a/java/java-impl/src/com/intellij/ide/favoritesTreeView/PsiPackageFavoriteNodeProvider.java +++ b/java/java-impl/src/com/intellij/ide/favoritesTreeView/PsiPackageFavoriteNodeProvider.java @@ -30,7 +30,6 @@ import com.intellij.ide.util.treeView.AbstractTreeNode; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; @@ -89,9 +88,9 @@ public class PsiPackageFavoriteNodeProvider extends FavoriteNodeProvider { } } } else { - final Object data = context.getData(DataConstantsEx.MODULE_GROUP_ARRAY); - if (data instanceof ModuleGroup[]) { - for (ModuleGroup moduleGroup : ((ModuleGroup[])data)) { + final ModuleGroup[] data = ModuleGroup.ARRAY_DATA_KEY.getData(context); + if (data != null) { + for (ModuleGroup moduleGroup : data) { if (currentViewId.equals(ProjectViewPane.ID)) { result.add(new ProjectViewModuleGroupNode(project, moduleGroup, viewSettings)); } @@ -198,4 +197,4 @@ public class PsiPackageFavoriteNodeProvider extends FavoriteNodeProvider { } return super.getPsiElement(element); } -} \ No newline at end of file +} diff --git a/java/java-impl/src/com/intellij/ide/hierarchy/method/OverrideImplementMethodAction.java b/java/java-impl/src/com/intellij/ide/hierarchy/method/OverrideImplementMethodAction.java index b2148fadb7de..1bc9f6fb4b5e 100644 --- a/java/java-impl/src/com/intellij/ide/hierarchy/method/OverrideImplementMethodAction.java +++ b/java/java-impl/src/com/intellij/ide/hierarchy/method/OverrideImplementMethodAction.java @@ -45,7 +45,7 @@ abstract class OverrideImplementMethodAction extends AnAction { public final void actionPerformed(final AnActionEvent event) { final DataContext dataContext = event.getDataContext(); - final MethodHierarchyBrowser methodHierarchyBrowser = (MethodHierarchyBrowser)dataContext.getData(MethodHierarchyBrowserBase.METHOD_HIERARCHY_BROWSER_DATA_KEY); + final MethodHierarchyBrowser methodHierarchyBrowser = (MethodHierarchyBrowser)MethodHierarchyBrowserBase.DATA_KEY.getData(dataContext); if (methodHierarchyBrowser == null) return; final Project project = PlatformDataKeys.PROJECT.getData(dataContext); if (project == null) return; @@ -98,7 +98,7 @@ abstract class OverrideImplementMethodAction extends AnAction { final Presentation presentation = e.getPresentation(); final DataContext dataContext = e.getDataContext(); - final MethodHierarchyBrowser methodHierarchyBrowser = (MethodHierarchyBrowser)dataContext.getData(MethodHierarchyBrowser.METHOD_HIERARCHY_BROWSER_DATA_KEY); + final MethodHierarchyBrowser methodHierarchyBrowser = (MethodHierarchyBrowser)MethodHierarchyBrowserBase.DATA_KEY.getData(dataContext); if (methodHierarchyBrowser == null) { presentation.setEnabled(false); presentation.setVisible(false); diff --git a/java/java-impl/src/com/intellij/ide/macro/FileClassMacro.java b/java/java-impl/src/com/intellij/ide/macro/FileClassMacro.java index 13306519d8cd..3bcf55015e28 100644 --- a/java/java-impl/src/com/intellij/ide/macro/FileClassMacro.java +++ b/java/java-impl/src/com/intellij/ide/macro/FileClassMacro.java @@ -15,11 +15,12 @@ */ package com.intellij.ide.macro; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiJavaFile; import com.intellij.ide.IdeBundle; -import com.intellij.ide.JavaDataAccessors; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiJavaFile; public final class FileClassMacro extends Macro { public String getName() { @@ -43,15 +44,14 @@ public final class FileClassMacro extends Macro { //if (!(psiFile instanceof PsiJavaFile)) { // return null; //} - final PsiJavaFile javaFile = JavaDataAccessors.PSI_JAVA_FILE.from(dataContext); - if (javaFile == null) return null; - PsiClass[] classes = javaFile.getClasses(); + final PsiFile javaFile = LangDataKeys.PSI_FILE.getData(dataContext); + if (!(javaFile instanceof PsiJavaFile)) return null; + PsiClass[] classes = ((PsiJavaFile) javaFile).getClasses(); if (classes.length == 1) { return classes[0].getQualifiedName(); } String fileName = javaFile.getVirtualFile().getNameWithoutExtension(); - for (int i = 0; i < classes.length; i++) { - PsiClass aClass = classes[i]; + for (PsiClass aClass : classes) { String name = aClass.getName(); if (fileName.equals(name)) { return aClass.getQualifiedName(); diff --git a/java/java-impl/src/com/intellij/ide/macro/FileFQPackage.java b/java/java-impl/src/com/intellij/ide/macro/FileFQPackage.java index ab0182ab39d7..a4e04b2f9d0b 100644 --- a/java/java-impl/src/com/intellij/ide/macro/FileFQPackage.java +++ b/java/java-impl/src/com/intellij/ide/macro/FileFQPackage.java @@ -15,14 +15,13 @@ */ package com.intellij.ide.macro; +import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.psi.PsiPackage; -import com.intellij.ide.IdeBundle; -import com.intellij.ide.JavaDataAccessors; public class FileFQPackage extends Macro { - public String expand(DataContext dataContext) throws Macro.ExecutionCancelledException { - PsiPackage aPackage = JavaDataAccessors.FILE_PACKAGE.from(dataContext); + public String expand(DataContext dataContext) { + PsiPackage aPackage = FilePackageMacro.getFilePackage(dataContext); if (aPackage == null) return null; return aPackage.getQualifiedName(); } diff --git a/java/java-impl/src/com/intellij/ide/macro/FilePackageMacro.java b/java/java-impl/src/com/intellij/ide/macro/FilePackageMacro.java index 361302030d38..96343c638664 100644 --- a/java/java-impl/src/com/intellij/ide/macro/FilePackageMacro.java +++ b/java/java-impl/src/com/intellij/ide/macro/FilePackageMacro.java @@ -15,10 +15,14 @@ */ package com.intellij.ide.macro; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.psi.PsiPackage; import com.intellij.ide.IdeBundle; -import com.intellij.ide.JavaDataAccessors; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.DataKeys; +import com.intellij.psi.JavaDirectoryService; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiPackage; +import org.jetbrains.annotations.Nullable; public final class FilePackageMacro extends Macro { public String getName() { @@ -30,8 +34,17 @@ public final class FilePackageMacro extends Macro { } public String expand(DataContext dataContext) { - PsiPackage aPackage = JavaDataAccessors.FILE_PACKAGE.from(dataContext); + PsiPackage aPackage = getFilePackage(dataContext); if (aPackage == null) return null; return aPackage.getName(); } + + @Nullable + static PsiPackage getFilePackage(DataContext dataContext) { + PsiFile psiFile = DataKeys.PSI_FILE.getData(dataContext); + if (psiFile == null) return null; + PsiDirectory containingDirectory = psiFile.getContainingDirectory(); + if (containingDirectory == null || !containingDirectory.isValid()) return null; + return JavaDirectoryService.getInstance().getPackage(containingDirectory); + } } diff --git a/java/java-impl/src/com/intellij/ide/projectView/impl/PackageViewPane.java b/java/java-impl/src/com/intellij/ide/projectView/impl/PackageViewPane.java index 23789a9067b4..3069e3852d43 100644 --- a/java/java-impl/src/com/intellij/ide/projectView/impl/PackageViewPane.java +++ b/java/java-impl/src/com/intellij/ide/projectView/impl/PackageViewPane.java @@ -32,7 +32,6 @@ import com.intellij.ide.util.treeView.AbstractTreeNode; import com.intellij.ide.util.treeView.AbstractTreeStructure; import com.intellij.ide.util.treeView.AbstractTreeUpdater; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.OrderEntry; @@ -40,7 +39,10 @@ import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; +import com.intellij.psi.JavaDirectoryService; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiPackage; import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -89,10 +91,10 @@ public final class PackageViewPane extends AbstractProjectViewPSIPane { @Override public Object getData(final String dataId) { - if (DataConstantsEx.PACKAGE_ELEMENT.equals(dataId)) { + if (PackageElement.DATA_KEY.is(dataId)) { final PackageElement packageElement = getSelectedPackageElement(); } - if (DataConstants.MODULE.equals(dataId)) { + if (LangDataKeys.MODULE.is(dataId)) { final PackageElement packageElement = getSelectedPackageElement(); if (packageElement != null) { return packageElement.getModule(); @@ -288,4 +290,4 @@ public final class PackageViewPane extends AbstractProjectViewPSIPane { return modules.toArray(new Module[modules.size()]); } } -} \ No newline at end of file +} diff --git a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageElement.java b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageElement.java index f2a5b129c8e0..a89076455542 100644 --- a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageElement.java +++ b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageElement.java @@ -15,6 +15,7 @@ */ package com.intellij.ide.projectView.impl.nodes; +import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.module.Module; import com.intellij.psi.PsiPackage; @@ -24,6 +25,8 @@ import com.intellij.psi.PsiPackage; * Time: 3:51:02 PM */ public final class PackageElement { + public static final DataKey DATA_KEY = DataKey.create("package.element"); + private final Module myModule; private final PsiPackage myElement; private final boolean myIsLibraryElement; diff --git a/java/java-impl/src/com/intellij/javadoc/JavadocBundle.java b/java/java-impl/src/com/intellij/javadoc/JavadocBundle.java index 3e4c0a155ece..b59c698e5954 100644 --- a/java/java-impl/src/com/intellij/javadoc/JavadocBundle.java +++ b/java/java-impl/src/com/intellij/javadoc/JavadocBundle.java @@ -24,11 +24,7 @@ import java.lang.ref.SoftReference; import java.util.ResourceBundle; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 01.09.2005 - * Time: 14:37:13 - * To change this template use File | Settings | File Templates. + * @author yole */ public class JavadocBundle { private static Reference ourBundle; @@ -38,7 +34,7 @@ public class JavadocBundle { private JavadocBundle() { } - public static String message(@PropertyKey(resourceBundle = BUNDLE)String key, Object... params) { + public static String message(@PropertyKey(resourceBundle = BUNDLE) String key, Object... params) { return CommonBundle.message(getBundle(), key, params); } diff --git a/java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java b/java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java index 008a04259f39..897ab67f3cbd 100644 --- a/java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java +++ b/java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java @@ -23,8 +23,8 @@ import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.runners.ProgramRunner; import com.intellij.execution.util.ExecutionErrorDialog; import com.intellij.ide.DataManager; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.actionSystem.impl.SimpleDataContext; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.module.Module; @@ -57,7 +57,7 @@ public final class JavadocGenerationManager extends AbstractProjectComponent imp } public void generateJavadoc(final PsiDirectory directory, DataContext dataContext) { - Component component = (Component)dataContext.getData(DataConstants.CONTEXT_COMPONENT); + Component component = PlatformDataKeys.CONTEXT_COMPONENT.getData(dataContext); final PsiPackage aPackage = directory != null ? JavaDirectoryService.getInstance().getPackage(directory) : null; String packageFQName = aPackage != null ? aPackage.getQualifiedName() : null; @@ -126,4 +126,4 @@ public final class JavadocGenerationManager extends AbstractProjectComponent imp return myConfiguration; } -} \ No newline at end of file +} diff --git a/java/java-impl/src/com/intellij/javadoc/actions/GenerateJavadocAction.java b/java/java-impl/src/com/intellij/javadoc/actions/GenerateJavadocAction.java index 888ea53bdc7c..ba13e2366309 100644 --- a/java/java-impl/src/com/intellij/javadoc/actions/GenerateJavadocAction.java +++ b/java/java-impl/src/com/intellij/javadoc/actions/GenerateJavadocAction.java @@ -33,7 +33,7 @@ public final class GenerateJavadocAction extends AnAction{ public void update(AnActionEvent event){ final Presentation presentation = event.getPresentation(); - presentation.setEnabled(event.getDataContext().getData(DataConstants.PROJECT) != null); + presentation.setEnabled(PlatformDataKeys.PROJECT.getData(event.getDataContext()) != null); } private static PsiDirectory getDirectoryFromContext(final DataContext dataContext) { @@ -63,4 +63,4 @@ public final class GenerateJavadocAction extends AnAction{ return null; } -} \ No newline at end of file +} diff --git a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java index 26745d57a7bb..a9656cdafa26 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -61,11 +61,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Apr 11, 2006 - * Time: 7:45:12 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class JavaDocumentationProvider implements CodeDocumentationProvider { private static final String LINE_SEPARATOR = "\n"; @@ -608,7 +604,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider { return CodeInsightBundle.message("javadoc.candidates.not.found", text); } - private void createElementLink(@NonNls final StringBuffer sb, final PsiElement element, final String str) { + private static void createElementLink(@NonNls final StringBuffer sb, final PsiElement element, final String str) { sb.append("  "); @@ -649,7 +645,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider { JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep("Choose javadoc root", ArrayUtil.toStringArray(set)) { public PopupStep onChosen(final String selectedValue, final boolean finalChoice) { BrowserUtil.launchBrowser(selectedValue); - return PopupStep.FINAL_CHOICE; + return FINAL_CHOICE; } }).showInBestPositionFor(DataManager.getInstance().getDataContext()); } diff --git a/java/java-impl/src/com/intellij/lang/java/JavaLanguage.java b/java/java-impl/src/com/intellij/lang/java/JavaLanguage.java index 1e05e1d4f774..5282be171fe4 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaLanguage.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaLanguage.java @@ -26,11 +26,7 @@ import com.intellij.pom.java.LanguageLevel; import org.jetbrains.annotations.NotNull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 22, 2005 - * Time: 11:16:59 PM - * To change this template use File | Settings | File Templates. + * @author max */ public class JavaLanguage extends Language { public JavaLanguage() { @@ -38,7 +34,8 @@ public class JavaLanguage extends Language { SyntaxHighlighterFactory.LANGUAGE_FACTORY.addExplicitExtension(this, new SyntaxHighlighterFactory() { @NotNull public SyntaxHighlighter getSyntaxHighlighter(final Project project, final VirtualFile virtualFile) { - return new JavaFileHighlighter(virtualFile != null ? LanguageLevelUtil.getLanguageLevelForFile(virtualFile) : LanguageLevel.HIGHEST); + return new JavaFileHighlighter( + virtualFile != null ? LanguageLevelUtil.getLanguageLevelForFile(virtualFile) : LanguageLevel.HIGHEST); } }); } diff --git a/java/java-impl/src/com/intellij/lang/java/JavaParserDefinition.java b/java/java-impl/src/com/intellij/lang/java/JavaParserDefinition.java index 17558301ca28..c69bef5561b5 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaParserDefinition.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaParserDefinition.java @@ -35,11 +35,7 @@ import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Jan 26, 2005 - * Time: 12:40:22 PM - * To change this template use File | Settings | File Templates. + * @author max */ public class JavaParserDefinition implements ParserDefinition { private final TokenSet myStringLiteralElementSet = TokenSet.create(JavaElementType.LITERAL_EXPRESSION); diff --git a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsRepositoryPsiElement.java b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsRepositoryPsiElement.java index 6d48380dedd0..ef1ac2797bcd 100644 --- a/java/java-impl/src/com/intellij/psi/impl/compiled/ClsRepositoryPsiElement.java +++ b/java/java-impl/src/com/intellij/psi/impl/compiled/ClsRepositoryPsiElement.java @@ -15,10 +15,8 @@ */ package com.intellij.psi.impl.compiled; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiInvalidElementAccessException; -import com.intellij.psi.PsiManager; +import com.intellij.psi.*; +import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.stubs.PsiFileStub; import com.intellij.psi.stubs.StubElement; import com.intellij.util.ArrayUtil; @@ -26,13 +24,17 @@ import org.jetbrains.annotations.NotNull; import java.util.List; -public abstract class ClsRepositoryPsiElement extends ClsElementImpl { +public abstract class ClsRepositoryPsiElement extends ClsElementImpl implements StubBasedPsiElement { private final T myStub; protected ClsRepositoryPsiElement(final T stub) { myStub = stub; } + public IStubElementType getElementType() { + return myStub.getStubType(); + } + public PsiElement getParent() { return myStub.getParentStub().getPsi(); } diff --git a/java/java-impl/src/com/intellij/psi/impl/search/JavaIndexPatternBuilder.java b/java/java-impl/src/com/intellij/psi/impl/search/JavaIndexPatternBuilder.java index 84725cb0b3a3..3b1780d23b77 100644 --- a/java/java-impl/src/com/intellij/psi/impl/search/JavaIndexPatternBuilder.java +++ b/java/java-impl/src/com/intellij/psi/impl/search/JavaIndexPatternBuilder.java @@ -15,17 +15,18 @@ */ package com.intellij.psi.impl.search; -import com.intellij.lexer.Lexer; import com.intellij.lexer.JavaLexer; +import com.intellij.lexer.Lexer; +import com.intellij.psi.JavaDocTokenType; +import com.intellij.psi.JavaTokenType; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiJavaFile; -import com.intellij.psi.JavaDocTokenType; -import com.intellij.psi.xml.XmlTokenType; -import com.intellij.psi.xml.XmlElementType; import com.intellij.psi.impl.source.tree.StdTokenSets; import com.intellij.psi.jsp.JspFile; -import com.intellij.psi.tree.TokenSet; import com.intellij.psi.tree.IElementType; +import com.intellij.psi.tree.TokenSet; +import com.intellij.psi.xml.XmlElementType; +import com.intellij.psi.xml.XmlTokenType; import org.jetbrains.annotations.Nullable; /** @@ -56,6 +57,6 @@ public class JavaIndexPatternBuilder implements IndexPatternBuilder { } public int getCommentEndDelta(final IElementType tokenType) { - return 0; + return tokenType == JavaTokenType.C_STYLE_COMMENT ? "*/".length() : 0; } } diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportsFormatter.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportsFormatter.java index f60e452428f1..35531343cec7 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportsFormatter.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportsFormatter.java @@ -30,13 +30,8 @@ import com.intellij.util.text.CharArrayUtil; import org.jetbrains.annotations.NonNls; /** - * Created by IntelliJ IDEA. - * User: lesya - * Date: Jul 21, 2005 - * Time: 7:42:23 PM - * To change this template use File | Settings | File Templates. + * @author lesya */ - public class ImportsFormatter extends XmlRecursiveElementVisitor { private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.codeStyle.ImportsFormatter"); @@ -59,7 +54,7 @@ public class ImportsFormatter extends XmlRecursiveElementVisitor { } } - private boolean isPageDirectiveTag(final XmlTag tag) { + private static boolean isPageDirectiveTag(final XmlTag tag) { return PAGE_DIRECTIVE.equals(tag.getName()); } @@ -134,7 +129,7 @@ public class ImportsFormatter extends XmlRecursiveElementVisitor { } } - private ASTNode findValueToken(final ASTNode node) { + private static ASTNode findValueToken(final ASTNode node) { ASTNode child = node.getFirstChildNode(); while (child != null){ if (child.getElementType() == XmlElementType.XML_ATTRIBUTE_VALUE_TOKEN) return child; @@ -143,7 +138,7 @@ public class ImportsFormatter extends XmlRecursiveElementVisitor { return null; } - private boolean isImportAttribute(final XmlAttribute attribute) { + private static boolean isImportAttribute(final XmlAttribute attribute) { return IMPORT_ATT.equals(attribute.getName()); } diff --git a/java/java-impl/src/com/intellij/psi/impl/source/javadoc/ValueDocTagInfo.java b/java/java-impl/src/com/intellij/psi/impl/source/javadoc/ValueDocTagInfo.java index 595ef8c5b9d6..d8932ff1783c 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/javadoc/ValueDocTagInfo.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/javadoc/ValueDocTagInfo.java @@ -20,17 +20,13 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiField; import com.intellij.psi.PsiModifier; import com.intellij.psi.PsiReference; -import com.intellij.psi.util.PsiUtil; import com.intellij.psi.impl.JavaConstantExpressionEvaluator; import com.intellij.psi.javadoc.JavadocTagInfo; import com.intellij.psi.javadoc.PsiDocTagValue; +import com.intellij.psi.util.PsiUtil; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 10.08.2005 - * Time: 18:25:51 - * To change this template use File | Settings | File Templates. + * @author yole */ public class ValueDocTagInfo implements JavadocTagInfo { public String getName() { @@ -81,6 +77,6 @@ public class ValueDocTagInfo implements JavadocTagInfo { } public PsiReference getReference(PsiDocTagValue value) { - return null; //To change body of implemented methods use File | Settings | File Templates. + return null; } } diff --git a/java/java-impl/src/com/intellij/psi/impl/source/parsing/JavaParsingContext.java b/java/java-impl/src/com/intellij/psi/impl/source/parsing/JavaParsingContext.java index 856f0c4dfe28..e1cec1c88e36 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/parsing/JavaParsingContext.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/parsing/JavaParsingContext.java @@ -15,16 +15,12 @@ */ package com.intellij.psi.impl.source.parsing; +import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.impl.source.ParsingContext; import com.intellij.util.CharTable; -import com.intellij.pom.java.LanguageLevel; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: 07.06.2004 - * Time: 18:45:17 - * To change this template use File | Settings | File Templates. + * @author ik */ public class JavaParsingContext extends ParsingContext { private final DeclarationParsing myDeclarationParsing; diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java index fa6313aeeff0..79a5f6047c33 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/MergeMethodArguments.java @@ -20,6 +20,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.impl.source.PsiImmediateClassType; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.refactoring.changeSignature.ChangeSignatureProcessor; import com.intellij.refactoring.changeSignature.ParameterInfoImpl; @@ -71,7 +72,7 @@ public class MergeMethodArguments extends FixableUsageInfo { psiClass = myContainingClass.findInnerClassByName(className, false); } else { - psiClass = psiFacade.findClass(StringUtil.getQualifiedName(packageName, className)); + psiClass = psiFacade.findClass(StringUtil.getQualifiedName(packageName, className), GlobalSearchScope.allScope(getProject())); } PsiSubstitutor subst = PsiSubstitutor.EMPTY; if (deepestSuperMethod != null) { diff --git a/java/java-impl/src/com/intellij/refactoring/migration/MigrationUtil.java b/java/java-impl/src/com/intellij/refactoring/migration/MigrationUtil.java index e357e06da225..a77ad19d6818 100644 --- a/java/java-impl/src/com/intellij/refactoring/migration/MigrationUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/migration/MigrationUtil.java @@ -34,6 +34,9 @@ import java.util.ArrayList; public class MigrationUtil { private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.migration.MigrationUtil"); + private MigrationUtil() { + } + public static UsageInfo[] findPackageUsages(PsiManager manager, PsiMigration migration, String qName) { PsiPackage aPackage = findOrCreatePackage(manager, migration, qName); @@ -129,7 +132,7 @@ public class MigrationUtil { } static PsiClass findOrCreateClass(PsiManager manager, final PsiMigration migration, final String qName) { - PsiClass aClass = JavaPsiFacade.getInstance(manager.getProject()).findClass(qName); + PsiClass aClass = JavaPsiFacade.getInstance(manager.getProject()).findClass(qName, GlobalSearchScope.allScope(manager.getProject())); if (aClass == null) { aClass = ApplicationManager.getApplication().runWriteAction(new Computable() { public PsiClass compute() { diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesHandler.java index a69084c8921c..67bac1d6d09e 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesHandler.java @@ -15,13 +15,13 @@ */ package com.intellij.refactoring.move.moveClassesOrPackages; +import com.intellij.codeInsight.daemon.impl.CollectHighlightsUtil; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.impl.source.jsp.jspJava.JspClass; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; -import com.intellij.openapi.editor.Editor; -import com.intellij.codeInsight.daemon.impl.CollectHighlightsUtil; import org.jetbrains.annotations.Nullable; public class MoveClassesHandler extends MoveClassesOrPackagesHandlerBase { @@ -54,7 +54,7 @@ public class MoveClassesHandler extends MoveClassesOrPackagesHandlerBase { if (element instanceof PsiClass && !(element instanceof PsiAnonymousClass) && element.getParent() instanceof PsiFile) { MoveClassesOrPackagesImpl.doMove(project, new PsiElement[]{element}, - (PsiElement)dataContext.getData(DataConstantsEx.TARGET_PSI_ELEMENT), null); + LangDataKeys.TARGET_PSI_ELEMENT.getData(dataContext), null); return true; } return false; diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java index 32c7f0a48a20..542201bbb395 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryDialog.java @@ -21,6 +21,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; @@ -45,6 +46,8 @@ import javax.swing.*; import javax.swing.event.DocumentEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.HashSet; +import java.util.Set; /** * @author ven @@ -58,6 +61,12 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends DialogWrapper { public MoveClassesOrPackagesToNewDirectoryDialog(@NotNull final PsiDirectory directory, PsiElement[] elementsToMove, final MoveCallback moveCallback) { + this(directory, elementsToMove, true, moveCallback); + } + + public MoveClassesOrPackagesToNewDirectoryDialog(@NotNull final PsiDirectory directory, PsiElement[] elementsToMove, + boolean canShowPreserveSourceRoots, + final MoveCallback moveCallback) { super(false); setTitle(MoveHandler.REFACTORING_NAME); myDirectory = directory; @@ -93,6 +102,24 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends DialogWrapper { } }); + if (canShowPreserveSourceRoots) { + final Set sourceRoots = new HashSet(); + final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(directory.getProject()).getFileIndex(); + for (PsiElement element : elementsToMove) { + if (element instanceof PsiPackage) { + for (PsiDirectory psiDirectory : ((PsiPackage)element).getDirectories()) { + sourceRoots.add(fileIndex.getSourceRootForFile(psiDirectory.getVirtualFile())); + } + } else if (element instanceof PsiClass) { + final PsiDirectory psiDirectory = element.getContainingFile().getContainingDirectory(); + LOG.assertTrue(psiDirectory != null); + if (psiDirectory != null) { + sourceRoots.add(psiDirectory.getVirtualFile()); + } + } + } + myPreserveSourceRoot.setVisible(sourceRoots.size() > 1); + } init(); } @@ -101,6 +128,7 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends DialogWrapper { private JCheckBox mySearchInCommentsAndStringsCheckBox; private JPanel myRootPanel; private JLabel myNameLabel; + private JCheckBox myPreserveSourceRoot; private boolean isSearchInNonJavaFiles() { return mySearchForTextOccurrencesCheckBox.isSelected(); @@ -150,6 +178,17 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends DialogWrapper { refactoringSettings.MOVE_SEARCH_IN_COMMENTS = searchInComments; refactoringSettings.MOVE_SEARCH_FOR_TEXT = searchForTextOccurences; + performRefactoring(project, directory, aPackage, searchInComments, searchForTextOccurences); + } + + @Override + public JComponent getPreferredFocusedComponent() { + return myDestDirectoryField.getTextField(); + } + + protected void performRefactoring(Project project, PsiDirectory directory, PsiPackage aPackage, + boolean searchInComments, + boolean searchForTextOccurences) { final VirtualFile sourceRoot = ProjectRootManager.getInstance(project).getFileIndex().getSourceRootForFile(directory.getVirtualFile()); if (sourceRoot == null) { Messages.showErrorDialog(project, RefactoringBundle.message("destination.directory.does.not.correspond.to.any.package"), @@ -157,7 +196,9 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends DialogWrapper { return; } final JavaRefactoringFactory factory = JavaRefactoringFactory.getInstance(project); - final MoveDestination destination = factory.createSourceRootMoveDestination(aPackage.getQualifiedName(), sourceRoot); + final MoveDestination destination = myPreserveSourceRoot.isSelected() && myPreserveSourceRoot.isVisible() + ? factory.createSourceFolderPreservingMoveDestination(aPackage.getQualifiedName()) + : factory.createSourceRootMoveDestination(aPackage.getQualifiedName(), sourceRoot); MoveClassesOrPackagesProcessor processor = new MoveClassesOrPackagesProcessor(myDirectory.getProject(), myElementsToMove, destination, searchInComments, searchForTextOccurences, diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryForm.form b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryForm.form index 3f5fec5d3902..77610b90cba1 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryForm.form +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesToNewDirectoryForm.form @@ -1,9 +1,9 @@
- + - + @@ -16,14 +16,6 @@ - - - - - - - - @@ -35,7 +27,7 @@ - + @@ -58,6 +50,23 @@ + + + + + + + + + + + + + + + + + diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java new file mode 100644 index 000000000000..b2cf0d2b546d --- /dev/null +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveDirectoryWithClassesProcessor.java @@ -0,0 +1,277 @@ +/* + * Copyright 2000-2009 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * User: anna + * Date: 28-Dec-2009 + */ +package com.intellij.refactoring.move.moveClassesOrPackages; + +import com.intellij.codeInsight.ChangeContextUtil; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Ref; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.psi.*; +import com.intellij.psi.search.searches.ReferencesSearch; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.refactoring.BaseRefactoringProcessor; +import com.intellij.refactoring.RefactoringBundle; +import com.intellij.refactoring.listeners.RefactoringElementListener; +import com.intellij.refactoring.move.MoveCallback; +import com.intellij.refactoring.rename.RenameUtil; +import com.intellij.refactoring.util.NonCodeUsageInfo; +import com.intellij.refactoring.util.RefactoringUIUtil; +import com.intellij.usageView.UsageInfo; +import com.intellij.usageView.UsageViewDescriptor; +import com.intellij.usageView.UsageViewUtil; +import com.intellij.util.IncorrectOperationException; +import com.intellij.util.containers.MultiMap; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; + +public class MoveDirectoryWithClassesProcessor extends BaseRefactoringProcessor { + private final PsiDirectory[] myDirectories; + private PsiDirectory myTargetDirectory; + private boolean mySearchInComments; + private boolean mySearchInNonJavaFiles; + private Map myClassesToMove; + private NonCodeUsageInfo[] myNonCodeUsages; + private MoveCallback myMoveCallback; + + public MoveDirectoryWithClassesProcessor(Project project, + PsiDirectory[] directories, + PsiDirectory targetDirectory, + boolean searchInComments, + boolean searchInNonJavaFiles, + boolean includeSelf, + MoveCallback moveCallback) { + super(project); + myDirectories = directories; + myTargetDirectory = targetDirectory; + mySearchInComments = searchInComments; + mySearchInNonJavaFiles = searchInNonJavaFiles; + myMoveCallback = moveCallback; + myClassesToMove = new HashMap(); + for (PsiDirectory dir : directories) { + collectClasses(myClassesToMove, dir, includeSelf ? dir.getParentDirectory() : dir, getTargetDirectory(dir)); + } + } + + @Override + protected UsageViewDescriptor createUsageViewDescriptor(UsageInfo[] usages) { + PsiElement[] elements = new PsiElement[myClassesToMove.size()]; + final PsiClass[] classes = myClassesToMove.keySet().toArray(new PsiClass[myClassesToMove.keySet().size()]); + System.arraycopy(classes, 0, elements, 0, classes.length); + return new MoveClassesOrPackagesViewDescriptor(elements, false, false, getTargetName()); + } + + protected String getTargetName() { + return RefactoringUIUtil.getDescription(getTargetDirectory(null).getTargetDirectory(), false); + } + + @NotNull + @Override + public UsageInfo[] findUsages() { + final List usages = new ArrayList(); + final Set packageNames = new HashSet(); + for (PsiClass psiClass : myClassesToMove.keySet()) { + Collections.addAll(usages, MoveClassesOrPackagesUtil.findUsages(psiClass, mySearchInComments, mySearchInNonJavaFiles, psiClass.getName())); + final String fqName = psiClass.getQualifiedName(); + assert fqName != null; + packageNames.add(StringUtil.getPackageName(fqName)); + } + final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject); + for (String packageName : packageNames) { + final PsiPackage aPackage = psiFacade.findPackage(packageName); + if (aPackage != null) { + boolean remainsNothing = true; + for (PsiDirectory packageDirectory : aPackage.getDirectories()) { + if (!isUnderRefactoring(packageDirectory)) { + remainsNothing = false; + break; + } + } + if (remainsNothing) { + for (PsiReference reference : ReferencesSearch.search(aPackage)) { + final PsiElement element = reference.getElement(); + final PsiImportStatementBase statementBase = PsiTreeUtil.getParentOfType(element, PsiImportStatementBase.class); + if (statementBase != null && statementBase.isOnDemand()) { + usages.add(new RemoveOnDemandImportStatementsUsageInfo(statementBase)); + } + } + } + } + } + return UsageViewUtil.removeDuplicatedUsages(usages.toArray(new UsageInfo[usages.size()])); + } + + private boolean isUnderRefactoring(PsiDirectory packageDirectory) { + for (PsiDirectory directory : myDirectories) { + if (PsiTreeUtil.isAncestor(directory, packageDirectory, true)) { + return true; + } + } + return false; + } + + + @Override + protected boolean preprocessUsages(Ref refUsages) { + final MultiMap conflicts = new MultiMap(); + for (PsiClass psiClass : myClassesToMove.keySet()) { + try { + myClassesToMove.get(psiClass).checkMove(psiClass); + } + catch (IncorrectOperationException e) { + conflicts.putValue(psiClass, e.getMessage()); + } + } + return showConflicts(conflicts); + } + + @Override + protected void refreshElements(PsiElement[] elements) {} + + @Override + public void performRefactoring(UsageInfo[] usages) { + final Map oldToNewElementsMapping = new HashMap(); + for (PsiClass psiClass : myClassesToMove.keySet()) { + ChangeContextUtil.encodeContextInfo(psiClass, true); + final RefactoringElementListener listener = getTransaction().getElementListener(psiClass); + final PsiClass newClass = MoveClassesOrPackagesUtil.doMoveClass(psiClass, myClassesToMove.get(psiClass).findOrCreateTargetDirectory()); + oldToNewElementsMapping.put(psiClass, newClass); + listener.elementMoved(newClass); + } + for (PsiClass psiClass : myClassesToMove.keySet()) { + ChangeContextUtil.decodeContextInfo(psiClass, null, null); + } + myNonCodeUsages = MoveClassesOrPackagesProcessor.retargetUsages(usages, oldToNewElementsMapping); + for (UsageInfo usage : usages) { + if (usage instanceof RemoveOnDemandImportStatementsUsageInfo) { + final PsiElement element = usage.getElement(); + if (element != null) { + element.delete(); + } + } + } + for (PsiDirectory directory : myDirectories) { + directory.delete(); + } + } + + @Override + protected void performPsiSpoilingRefactoring() { + RenameUtil.renameNonCodeUsages(myProject, myNonCodeUsages); + if (myMoveCallback != null) { + myMoveCallback.refactoringCompleted(); + } + } + + private static void collectClasses(Map classesToMove, + PsiDirectory directory, + PsiDirectory rootDirectory, + @NotNull TargetDirectoryWrapper targetDirectory) { + final PsiElement[] children = directory.getChildren(); + final String relativePath = VfsUtil.getRelativePath(directory.getVirtualFile(), rootDirectory.getVirtualFile(), '/'); + + final TargetDirectoryWrapper newTargetDirectory = relativePath.length() == 0 + ? targetDirectory + : targetDirectory.findOrCreateChild(relativePath); + for (PsiElement child : children) { + if (child instanceof PsiJavaFile) { + for (PsiClass aClass : ((PsiJavaFile)child).getClasses()) { + classesToMove.put(aClass, newTargetDirectory); + } + } + else if (child instanceof PsiDirectory){ + collectClasses(classesToMove, (PsiDirectory)child, directory, newTargetDirectory); + } + } + } + + @Override + protected String getCommandName() { + return RefactoringBundle.message("moving.directories.command"); + } + + public TargetDirectoryWrapper getTargetDirectory(PsiDirectory dir) { + return new TargetDirectoryWrapper(myTargetDirectory); + } + + private static class RemoveOnDemandImportStatementsUsageInfo extends UsageInfo { + public RemoveOnDemandImportStatementsUsageInfo(PsiImportStatementBase statementBase) { + super(statementBase); + } + } + + public static class TargetDirectoryWrapper { + private TargetDirectoryWrapper myParentDirectory; + private PsiDirectory myTargetDirectory; + private String myRelativePath; + + public TargetDirectoryWrapper(PsiDirectory targetDirectory) { + myTargetDirectory = targetDirectory; + } + + public TargetDirectoryWrapper(TargetDirectoryWrapper parentDirectory, String relativePath) { + myParentDirectory = parentDirectory; + myRelativePath = relativePath; + } + + public TargetDirectoryWrapper(PsiDirectory parentDirectory, String relativePath) { + myTargetDirectory = parentDirectory.findSubdirectory(relativePath); + //in case it was null + myParentDirectory = new TargetDirectoryWrapper(parentDirectory); + myRelativePath = relativePath; + } + + public PsiDirectory findOrCreateTargetDirectory() { + if (myTargetDirectory == null) { + final PsiDirectory root = myParentDirectory.findOrCreateTargetDirectory(); + + myTargetDirectory = root.findSubdirectory(myRelativePath); + if (myTargetDirectory == null) { + myTargetDirectory = root.createSubdirectory(myRelativePath); + } + } + return myTargetDirectory; + } + + @Nullable + public PsiDirectory getTargetDirectory() { + return myTargetDirectory; + } + + public TargetDirectoryWrapper findOrCreateChild(String relativePath) { + if (myTargetDirectory != null) { + final PsiDirectory psiDirectory = myTargetDirectory.findSubdirectory(relativePath); + if (psiDirectory != null) { + return new TargetDirectoryWrapper(psiDirectory); + } + } + return new TargetDirectoryWrapper(this, relativePath); + } + + public void checkMove(PsiClass psiClass) throws IncorrectOperationException { + if (myTargetDirectory != null) { + psiClass.getManager().checkMove(psiClass, myTargetDirectory); + } + } + } +} diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MovePackagesHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MovePackagesHandler.java index c07c8ca6dfde..388ba520fda2 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MovePackagesHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MovePackagesHandler.java @@ -19,21 +19,20 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.DialogWrapper; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; -import com.intellij.psi.search.searches.ReferencesSearch; +import com.intellij.psi.JavaDirectoryService; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiPackage; +import com.intellij.refactoring.JavaRefactoringSettings; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.move.MoveCallback; -import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesUtil; -import com.intellij.refactoring.util.MoveRenameUsageInfo; import com.intellij.refactoring.util.RadioUpDownListener; import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.util.containers.HashSet; import javax.swing.*; import java.awt.*; -import java.util.ArrayList; public class MovePackagesHandler extends MoveClassesOrPackagesHandlerBase { private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.move.moveClassesOrPackages.MovePackagesHandler"); @@ -50,10 +49,10 @@ public class MovePackagesHandler extends MoveClassesOrPackagesHandlerBase { } public void doMove(final Project project, final PsiElement[] elements, final PsiElement targetContainer, final MoveCallback callback) { - if (targetContainer == null && canMoveOrRearrangePackages(elements) ) { - PsiDirectory[] directories = new PsiDirectory[elements.length]; + if (canMoveOrRearrangePackages(elements) ) { + final PsiDirectory[] directories = new PsiDirectory[elements.length]; System.arraycopy(elements, 0, directories, 0, directories.length); - SelectMoveOrRearrangePackageDialog dialog = new SelectMoveOrRearrangePackageDialog(project, directories); + SelectMoveOrRearrangePackageDialog dialog = new SelectMoveOrRearrangePackageDialog(project, directories, targetContainer == null); dialog.show(); if (!dialog.isOK()) return; @@ -63,40 +62,31 @@ public class MovePackagesHandler extends MoveClassesOrPackagesHandlerBase { } if (dialog.isMoveDirectory()) { - final ArrayList usages = new ArrayList(); - for (PsiDirectory directory : directories) { - final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(directory); - if (aPackage != null) { - for (PsiReference reference : ReferencesSearch.search(aPackage, directory.getUseScope())) { - usages.add(new MoveRenameUsageInfo(reference, aPackage)); - } - } + if (targetContainer instanceof PsiDirectory) { + final JavaRefactoringSettings refactoringSettings = JavaRefactoringSettings.getInstance(); + final MoveDirectoryWithClassesProcessor processor = + new MoveDirectoryWithClassesProcessor(project, directories, (PsiDirectory)targetContainer, + refactoringSettings.RENAME_SEARCH_IN_COMMENTS_FOR_PACKAGE, + refactoringSettings.RENAME_SEARCH_IN_COMMENTS_FOR_PACKAGE, true, callback); + processor.run(); } - - final PsiElement[] targetDirectory = new PsiElement[]{targetContainer}; - - MoveFilesOrDirectoriesUtil.doMove(project, elements, targetDirectory, new MoveCallback() { - public void refactoringCompleted() { - if (callback != null) callback.refactoringCompleted(); - if (targetDirectory[0] instanceof PsiDirectory) { - final PsiPackage destPackage = JavaDirectoryService.getInstance().getPackage((PsiDirectory)targetDirectory[0]); - if (destPackage != null) { - for (MoveRenameUsageInfo usage : usages) { - final PsiPackage aPackage = (PsiPackage)usage.getReferencedElement(); - if (aPackage != null) { - final PsiReference reference = usage.getReference(); - if (reference != null) { - final PsiPackage pack = JavaPsiFacade.getInstance(project).findPackage(StringUtil.getQualifiedName(destPackage.getQualifiedName(), aPackage.getName())); - if (pack != null) { - reference.bindToElement(pack); - } - } - } - } + else { + final MoveClassesOrPackagesToNewDirectoryDialog dlg = + new MoveClassesOrPackagesToNewDirectoryDialog(directories[0], new PsiElement[2], false, callback) { + @Override + protected void performRefactoring(Project project, + final PsiDirectory targetDirectory, + PsiPackage aPackage, + boolean searchInComments, + boolean searchForTextOccurences) { + final MoveDirectoryWithClassesProcessor processor = + new MoveDirectoryWithClassesProcessor(project, directories, targetDirectory, searchInComments, searchForTextOccurences, + true, callback); + processor.run(); } - } - } - }); + }; + dlg.show(); + } return; } } @@ -131,10 +121,16 @@ public class MovePackagesHandler extends MoveClassesOrPackagesHandlerBase { private JRadioButton myRbMoveDirectory; private final PsiDirectory[] myDirectories; + private final boolean myRearrangePackagesEnabled; public SelectMoveOrRearrangePackageDialog(Project project, PsiDirectory[] directories) { + this(project, directories, true); + } + + public SelectMoveOrRearrangePackageDialog(Project project, PsiDirectory[] directories, boolean rearrangePackagesEnabled) { super(project, true); myDirectories = directories; + myRearrangePackagesEnabled = rearrangePackagesEnabled; setTitle(RefactoringBundle.message("select.refactoring.title")); init(); } @@ -184,13 +180,14 @@ public class MovePackagesHandler extends MoveClassesOrPackagesHandlerBase { } myRbRearrangePackage = new JRadioButton(); myRbRearrangePackage.setText(rearrangeDescription); + myRbRearrangePackage.setVisible(myRearrangePackagesEnabled); final String moveDirectoryDescription; if (myDirectories.length > 1) { - moveDirectoryDescription = "Move " + myDirectories.length + " directories to another directory"; + moveDirectoryDescription = "Move everything from " + myDirectories.length + " directories to another directory"; } else { - moveDirectoryDescription = "Move directory " + myDirectories[0].getVirtualFile().getPresentableUrl() + " to another directory"; + moveDirectoryDescription = "Move everything from " + myDirectories[0].getVirtualFile().getPresentableUrl() + " to another directory"; } myRbMoveDirectory = new JRadioButton(); myRbMoveDirectory.setMnemonic('d'); diff --git a/java/java-impl/src/com/intellij/refactoring/rename/DirectoryAsPackageRenameHandler.java b/java/java-impl/src/com/intellij/refactoring/rename/DirectoryAsPackageRenameHandler.java index ac3aa984c0b3..d8c69e078e04 100644 --- a/java/java-impl/src/com/intellij/refactoring/rename/DirectoryAsPackageRenameHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/rename/DirectoryAsPackageRenameHandler.java @@ -22,11 +22,17 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ProjectFileIndex; +import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.lang.TitledHandler; +import com.intellij.refactoring.move.moveClassesOrPackages.MoveDirectoryWithClassesProcessor; import org.jetbrains.annotations.NotNull; /** @@ -37,7 +43,7 @@ public class DirectoryAsPackageRenameHandler implements RenameHandler, TitledHan public boolean isAvailableOnDataContext(final DataContext dataContext) { final PsiElement element = PsiElementRenameHandler.getElement(dataContext); - return element instanceof PsiDirectory; + return element instanceof PsiDirectory && ProjectRootManager.getInstance(element.getProject()).getFileIndex().isInContent(((PsiDirectory)element).getVirtualFile()); } public boolean isRenaming(final DataContext dataContext) { @@ -59,9 +65,9 @@ public class DirectoryAsPackageRenameHandler implements RenameHandler, TitledHan doRename(element, project, element, editor); } - public static void doRename(PsiElement element, Project project, PsiElement nameSuggestionContext, Editor editor) { - PsiDirectory psiDirectory = (PsiDirectory)element; - PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(psiDirectory); + public static void doRename(PsiElement element, final Project project, PsiElement nameSuggestionContext, Editor editor) { + final PsiDirectory psiDirectory = (PsiDirectory)element; + final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(psiDirectory); final String qualifiedName = aPackage != null ? aPackage.getQualifiedName() : ""; if (aPackage == null || qualifiedName.length() == 0/*default package*/ || !JavaPsiFacade.getInstance(project).getNameHelper().isIdentifier(psiDirectory.getName())) { @@ -74,25 +80,87 @@ public class DirectoryAsPackageRenameHandler implements RenameHandler, TitledHan PsiElementRenameHandler.rename(aPackage, project, nameSuggestionContext, editor); } else { // the directory corresponds to a package that has multiple associated directories - StringBuffer message = new StringBuffer(); - RenameUtil.buildPackagePrefixChangedMessage(virtualFiles, message, qualifiedName); - buildMultipleDirectoriesInPackageMessage(message, aPackage, directories); - message.append(RefactoringBundle.message("directories.and.all.references.to.package.will.be.renamed", psiDirectory.getVirtualFile().getPresentableUrl())); - int ret = - Messages.showDialog(project, message.toString(), RefactoringBundle.message("warning.title"), - new String[]{ - RefactoringBundle.message("rename.package.button.text"), - RefactoringBundle.message("rename.directory.button.text"), - CommonBundle.getCancelButtonText()}, 0, Messages.getWarningIcon()); - if (ret == 0) { - PsiElementRenameHandler.rename(aPackage, project, nameSuggestionContext, editor); - } else if (ret == 1){ - PsiElementRenameHandler.rename(psiDirectory, project, nameSuggestionContext, editor); + final ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex(); + boolean inLib = false; + for (PsiDirectory directory : directories) { + inLib |= !projectFileIndex.isInContent(directory.getVirtualFile()); + } + + final PsiDirectory[] projectDirectories = aPackage.getDirectories(GlobalSearchScope.projectScope(project)); + if (inLib) { + final String promptMessage = "Package \'" + + aPackage.getName() + + "\' contains directories in libraries which cannot be renamed. Do you want to rename current directory"; + if (projectDirectories.length > 0) { + int ret = Messages + .showDialog(project, promptMessage + " or all directories in project?", RefactoringBundle.message("warning.title"), + new String[]{RefactoringBundle.message("rename.current.directory"), + RefactoringBundle.message("rename.directories"), CommonBundle.getCancelButtonText()}, 0, + Messages.getWarningIcon()); + renameDirs(project, nameSuggestionContext, editor, psiDirectory, aPackage, ret == 0 ? new PsiDirectory[] {psiDirectory} : projectDirectories); + } + else { + if (Messages.showDialog(project, promptMessage + "?", RefactoringBundle.message("warning.title"), + new String[]{CommonBundle.getOkButtonText(), CommonBundle.getCancelButtonText()}, 0, + Messages.getWarningIcon()) == DialogWrapper.OK_EXIT_CODE) { + renameDirs(project, nameSuggestionContext, editor, psiDirectory, aPackage, psiDirectory); + } + } + } + else { + final StringBuffer message = new StringBuffer(); + RenameUtil.buildPackagePrefixChangedMessage(virtualFiles, message, qualifiedName); + buildMultipleDirectoriesInPackageMessage(message, aPackage, directories); + message.append(RefactoringBundle.message("directories.and.all.references.to.package.will.be.renamed", + psiDirectory.getVirtualFile().getPresentableUrl())); + int ret = Messages.showDialog(project, message.toString(), RefactoringBundle.message("warning.title"), + new String[]{RefactoringBundle.message("rename.package.button.text"), + RefactoringBundle.message("rename.directory.button.text"), CommonBundle.getCancelButtonText()}, 0, + Messages.getWarningIcon()); + if (ret == 0) { + PsiElementRenameHandler.rename(aPackage, project, nameSuggestionContext, editor); + } + else if (ret == 1) { + renameDirs(project, nameSuggestionContext, editor, psiDirectory, aPackage, psiDirectory); + } } } } } + private static void renameDirs(final Project project, + final PsiElement nameSuggestionContext, + final Editor editor, + final PsiDirectory contextDirectory, + final PsiPackage aPackage, + final PsiDirectory... dirsToRename) { + final RenameDialog dialog = new RenameDialog(project, contextDirectory, nameSuggestionContext, editor) { + @Override + protected void doAction() { + final String newName = StringUtil.getQualifiedName(StringUtil.getPackageName(aPackage.getQualifiedName()), getNewName()); + final MoveDirectoryWithClassesProcessor moveProcessor = + new MoveDirectoryWithClassesProcessor(project, dirsToRename, null, isSearchInComments(), isSearchInNonJavaFiles(), false, null) { + @Override + public TargetDirectoryWrapper getTargetDirectory(final PsiDirectory dir) { + return new TargetDirectoryWrapper(dir.getParentDirectory(), getNewName()); + } + + @Override + protected String getTargetName() { + return newName; + } + + @Override + protected String getCommandName() { + return dirsToRename.length == 1 ? "Rename directory" : "Rename directories"; + } + }; + invokeRefactoring(moveProcessor); + } + }; + dialog.show(); + } + public static void buildMultipleDirectoriesInPackageMessage(StringBuffer message, PsiPackage aPackage, PsiDirectory[] directories) { diff --git a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/PsiExtendedTypeVisitor.java b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/PsiExtendedTypeVisitor.java index e9f7f4d77a71..264face31401 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/PsiExtendedTypeVisitor.java +++ b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/PsiExtendedTypeVisitor.java @@ -20,13 +20,9 @@ import com.intellij.psi.PsiType; import com.intellij.psi.PsiTypeVisitorEx; /** - * Created by IntelliJ IDEA. - * User: db - * Date: Dec 27, 2004 - * Time: 7:20:09 PM - * To change this template use File | Settings | File Templates. + * @author db */ -public abstract class PsiExtendedTypeVisitor extends PsiTypeVisitorEx { +public abstract class PsiExtendedTypeVisitor extends PsiTypeVisitorEx { public X visitClassType(final PsiClassType classType) { super.visitClassType(classType); final PsiClassType.ClassResolveResult result = classType.resolveGenerics(); diff --git a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/PsiTypeVariableFactory.java b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/PsiTypeVariableFactory.java index 0a3b33895584..35c5d72b3083 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/PsiTypeVariableFactory.java +++ b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/PsiTypeVariableFactory.java @@ -23,15 +23,10 @@ import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.LinkedList; /** - * Created by IntelliJ IDEA. - * User: db - * Date: Jan 12, 2005 - * Time: 9:41:45 PM - * To change this template use File | Settings | File Templates. + * @author db */ public class PsiTypeVariableFactory { private int myCurrent = 0; @@ -45,8 +40,8 @@ public class PsiTypeVariableFactory { public final void registerCluster(final HashSet cluster) { myClusters.add(cluster); - for (final Iterator v = cluster.iterator(); v.hasNext();) { - myVarCluster.put(new Integer(v.next().getIndex()), cluster); + for (final PsiTypeVariable aCluster : cluster) { + myVarCluster.put(new Integer(aCluster.getIndex()), cluster); } } @@ -77,76 +72,75 @@ public class PsiTypeVariableFactory { } return type.accept(new PsiTypeVisitor() { - public Boolean visitType(final PsiType type) { - return Boolean.TRUE; - } + public Boolean visitType(final PsiType type) { + return Boolean.TRUE; + } - public Boolean visitArrayType(final PsiArrayType arrayType) { - return arrayType.getDeepComponentType().accept(this); - } + public Boolean visitArrayType(final PsiArrayType arrayType) { + return arrayType.getDeepComponentType().accept(this); + } - public Boolean visitWildcardType(final PsiWildcardType wildcardType) { - final PsiType bound = wildcardType.getBound(); + public Boolean visitWildcardType(final PsiWildcardType wildcardType) { + final PsiType bound = wildcardType.getBound(); - if (bound != null) { - bound.accept(this); - } + if (bound != null) { + bound.accept(this); + } - return Boolean.TRUE; - } + return Boolean.TRUE; + } - public Boolean visitClassType(final PsiClassType classType) { - final PsiClassType.ClassResolveResult result = classType.resolveGenerics(); - final PsiClass aClass = result.getElement(); - final PsiSubstitutor aSubst = result.getSubstitutor(); + public Boolean visitClassType(final PsiClassType classType) { + final PsiClassType.ClassResolveResult result = classType.resolveGenerics(); + final PsiClass aClass = result.getElement(); + final PsiSubstitutor aSubst = result.getSubstitutor(); - if (aClass != null) { - final PsiManager manager = aClass.getManager(); - final JavaPsiFacade facade = JavaPsiFacade.getInstance(manager.getProject()); + if (aClass != null) { + final PsiManager manager = aClass.getManager(); + final JavaPsiFacade facade = JavaPsiFacade.getInstance(manager.getProject()); - if (aClass instanceof PsiTypeParameter) { - final PsiTypeParameterListOwner owner = - PsiTreeUtil.getParentOfType(myContext, PsiTypeParameterListOwner.class); + if (aClass instanceof PsiTypeParameter) { + final PsiTypeParameterListOwner owner = PsiTreeUtil.getParentOfType(myContext, PsiTypeParameterListOwner.class); - if (owner != null) { - boolean found = false; + if (owner != null) { + boolean found = false; - for (PsiTypeParameter typeParameter : PsiUtil.typeParametersIterable(owner)) { - found = manager.areElementsEquivalent(typeParameter, aClass); - if (found) break; - } + for (PsiTypeParameter typeParameter : PsiUtil.typeParametersIterable(owner)) { + found = manager.areElementsEquivalent(typeParameter, aClass); + if (found) break; + } - if (!found) { - return Boolean.FALSE; - } - } - else { - return Boolean.FALSE; - } - } - else if (!facade.getResolveHelper().isAccessible(aClass, myContext, null)) { - return Boolean.FALSE; - } + if (!found) { + return Boolean.FALSE; + } + } + else { + return Boolean.FALSE; + } + } + else if (!facade.getResolveHelper().isAccessible(aClass, myContext, null)) { + return Boolean.FALSE; + } - for (PsiTypeParameter parm : PsiUtil.typeParametersIterable(aClass)) { - final PsiType type = aSubst.substitute(parm); + for (PsiTypeParameter parm : PsiUtil.typeParametersIterable(aClass)) { + final PsiType type = aSubst.substitute(parm); - if (type != null){ - final Boolean b = type.accept(this); + if (type != null) { + final Boolean b = type.accept(this); - if (! b.booleanValue()){ - return Boolean.FALSE; - } - } - } + if (!b.booleanValue()) { + return Boolean.FALSE; + } + } + } - return Boolean.TRUE; - } - else { - return Boolean.FALSE; - } - } - }).booleanValue(); + return Boolean.TRUE; + } + else { + return Boolean.FALSE; + } + } + }).booleanValue(); } public String getPresentableText() { diff --git a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/builder/Constraint.java b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/builder/Constraint.java index b987e2d9d887..afb4691c2ad9 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/builder/Constraint.java +++ b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/builder/Constraint.java @@ -15,16 +15,12 @@ */ package com.intellij.refactoring.typeCook.deductive.builder; -import com.intellij.psi.PsiType; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.psi.PsiType; import com.intellij.refactoring.typeCook.deductive.resolver.Binding; /** - * Created by IntelliJ IDEA. - * User: db - * Date: Jul 20, 2004 - * Time: 6:00:28 PM - * To change this template use File | Settings | File Templates. + * @author db */ public abstract class Constraint { private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.typeCook.deductive.builder.Constraint"); diff --git a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/builder/Subtype.java b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/builder/Subtype.java index e60951413694..754b7453bd8b 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/builder/Subtype.java +++ b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/builder/Subtype.java @@ -19,11 +19,7 @@ import com.intellij.psi.PsiType; import com.intellij.refactoring.typeCook.deductive.resolver.Binding; /** - * Created by IntelliJ IDEA. - * User: db - * Date: Jul 20, 2004 - * Time: 6:02:29 PM - * To change this template use File | Settings | File Templates. + * @author db */ public class Subtype extends Constraint { public Subtype(PsiType left, PsiType right) { diff --git a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/util/VictimCollector.java b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/util/VictimCollector.java index 5ea95ae5e86b..370c2d2b2989 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/util/VictimCollector.java +++ b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/util/VictimCollector.java @@ -22,11 +22,7 @@ import com.intellij.refactoring.typeCook.Util; import java.util.HashSet; /** - * Created by IntelliJ IDEA. - * User: db - * Date: Jul 5, 2004 - * Time: 6:45:51 PM - * To change this template use File | Settings | File Templates. + * @author db */ public class VictimCollector extends Visitor { final HashSet myVictims = new HashSet(); diff --git a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/util/Visitor.java b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/util/Visitor.java index 5b11bc030ee3..1838ae91cb2e 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/util/Visitor.java +++ b/java/java-impl/src/com/intellij/refactoring/typeCook/deductive/util/Visitor.java @@ -18,26 +18,20 @@ package com.intellij.refactoring.typeCook.deductive.util; import com.intellij.psi.*; /** - * Created by IntelliJ IDEA. - * User: db - * Date: Jul 5, 2004 - * Time: 6:44:49 PM - * To change this template use File | Settings | File Templates. + * @author db */ public abstract class Visitor extends JavaRecursiveElementWalkingVisitor { @Override public void visitPackage(final PsiPackage aPackage) { final PsiDirectory[] dirs = aPackage.getDirectories(); - for (int i = 0; i < dirs.length; i++) { - final PsiFile[] files = dirs[i].getFiles(); - - for (int j = 0; j < files.length; j++) { - final PsiFile file = files[j]; + for (PsiDirectory dir : dirs) { + final PsiFile[] files = dir.getFiles(); + for (final PsiFile file : files) { if (file instanceof PsiJavaFile) { super.visitJavaFile(((PsiJavaFile)file)); } } } } -} \ No newline at end of file +} diff --git a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueHandler.java b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueHandler.java index 8624ac7cf6fc..6eb04548bfbc 100644 --- a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueHandler.java @@ -16,8 +16,8 @@ package com.intellij.refactoring.wrapreturnvalue; import com.intellij.ide.util.SuperMethodWarningUtil; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.CaretModel; import com.intellij.openapi.editor.Editor; @@ -42,7 +42,7 @@ class WrapReturnValueHandler implements RefactoringActionHandler { DataContext dataContext){ final ScrollingModel scrollingModel = editor.getScrollingModel(); scrollingModel.scrollToCaret(ScrollType.MAKE_VISIBLE); - final PsiElement element = (PsiElement) dataContext.getData(DataConstants.PSI_ELEMENT); + final PsiElement element = LangDataKeys.PSI_ELEMENT.getData(dataContext); PsiMethod selectedMethod = null; if(element instanceof PsiMethod){ selectedMethod = (PsiMethod) element; diff --git a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java index 6a852cf4106c..aabf2ac3eed0 100644 --- a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java @@ -26,6 +26,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.searches.OverridingMethodsSearch; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; @@ -97,7 +98,7 @@ public class WrapReturnValueProcessor extends FixableUsagesRefactoringProcessor } private String calculateUnwrapMethodName() { - final PsiClass existingClass = JavaPsiFacade.getInstance(myProject).findClass(myQualifiedName); + final PsiClass existingClass = JavaPsiFacade.getInstance(myProject).findClass(myQualifiedName, GlobalSearchScope.allScope(myProject)); if (existingClass != null) { if (TypeConversionUtil.isPrimitiveWrapper(myQualifiedName)) { final PsiPrimitiveType unboxedType = @@ -156,7 +157,7 @@ public class WrapReturnValueProcessor extends FixableUsagesRefactoringProcessor @Override protected boolean preprocessUsages(final Ref refUsages) { MultiMap conflicts = new MultiMap(); - final PsiClass existingClass = JavaPsiFacade.getInstance(myProject).findClass(myQualifiedName); + final PsiClass existingClass = JavaPsiFacade.getInstance(myProject).findClass(myQualifiedName, GlobalSearchScope.allScope(myProject)); if (myUseExistingClass) { if (existingClass == null) { conflicts.putValue(existingClass, RefactorJBundle.message("could.not.find.selected.wrapping.class")); diff --git a/java/java-impl/src/com/intellij/usages/impl/rules/MethodGroupingRule.java b/java/java-impl/src/com/intellij/usages/impl/rules/MethodGroupingRule.java index 6735651d7ecf..09694b709f7c 100644 --- a/java/java-impl/src/com/intellij/usages/impl/rules/MethodGroupingRule.java +++ b/java/java-impl/src/com/intellij/usages/impl/rules/MethodGroupingRule.java @@ -30,6 +30,7 @@ import com.intellij.usageView.UsageInfo; import com.intellij.usages.Usage; import com.intellij.usages.UsageGroup; import com.intellij.usages.UsageView; +import com.intellij.usages.UsageViewSettings; import com.intellij.usages.rules.PsiElementUsage; import com.intellij.usages.rules.UsageGroupingRule; import org.jetbrains.annotations.NotNull; @@ -43,26 +44,25 @@ public class MethodGroupingRule implements UsageGroupingRule { private static final Logger LOG = Logger.getInstance("#com.intellij.usages.impl.rules.MethodGroupingRule"); public UsageGroup groupUsage(Usage usage) { - if (usage instanceof PsiElementUsage) { - PsiElement psiElement = ((PsiElementUsage)usage).getElement(); - if (psiElement.getContainingFile() instanceof PsiJavaFile) { - PsiElement containingMethod = psiElement; - do { - containingMethod = PsiTreeUtil.getParentOfType(containingMethod, PsiMethod.class, true); - if (containingMethod == null || ((PsiMethod)containingMethod).getContainingClass().getQualifiedName() != null) break; - } - while (true); + if (!(usage instanceof PsiElementUsage)) return null; + PsiElement psiElement = ((PsiElementUsage)usage).getElement(); + if (psiElement.getContainingFile() instanceof PsiJavaFile) { + PsiElement containingMethod = psiElement; + do { + containingMethod = PsiTreeUtil.getParentOfType(containingMethod, PsiMethod.class, true); + if (containingMethod == null || ((PsiMethod)containingMethod).getContainingClass().getQualifiedName() != null) break; + } + while (true); - if (containingMethod != null) { - return new MethodUsageGroup((PsiMethod)containingMethod); - } + if (containingMethod != null) { + return new MethodUsageGroup((PsiMethod)containingMethod); } } return null; } private static class MethodUsageGroup implements UsageGroup, TypeSafeDataProvider { - private final SmartPsiElementPointer myMethodPointer; + private final SmartPsiElementPointer myMethodPointer; private final String myName; private Icon myIcon; @@ -142,8 +142,14 @@ public class MethodGroupingRule implements UsageGroupingRule { if (!(usageGroup instanceof MethodUsageGroup)) { LOG.error("MethodUsageGroup expected but " + usageGroup.getClass() + " found"); } + MethodUsageGroup other = (MethodUsageGroup)usageGroup; + PsiMethod myMethod = myMethodPointer.getElement(); + PsiMethod otherMethod = other.myMethodPointer.getElement(); + if (myMethod != null && otherMethod != null && myMethod != otherMethod && !UsageViewSettings.getInstance().IS_SORT_MEMBERS_ALPHABETICALLY) { + return myMethod.getTextOffset() < otherMethod.getTextOffset() ? -1 : 1; + } - return myName.compareTo(((MethodUsageGroup)usageGroup).myName); + return myName.compareTo(other.myName); } public void calcData(final DataKey key, final DataSink sink) { diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src1/pack2/UsagesFromBoth.java b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src1/pack2/UsagesFromBoth.java new file mode 100644 index 000000000000..6d4410fd6ae6 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src1/pack2/UsagesFromBoth.java @@ -0,0 +1,9 @@ +package pack2; + +import pack1.*; +import target.pack1.S1; + +public class UsagesFromBoth { + S1 s1; + S2 s2; +} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src1/target/empty.txt b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src1/target/empty.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src1/target/pack1/S1.java b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src1/target/pack1/S1.java new file mode 100644 index 000000000000..bafd60dc4fa1 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src1/target/pack1/S1.java @@ -0,0 +1,3 @@ +package target.pack1; + +public class S1{} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src2/pack1/S2.java b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src2/pack1/S2.java new file mode 100644 index 000000000000..0bd2d2024dc6 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src2/pack1/S2.java @@ -0,0 +1,3 @@ +package pack1; + +public class S2{} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src2/pack2/UsagesFromBoth2.java b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src2/pack2/UsagesFromBoth2.java new file mode 100644 index 000000000000..9b53f3854379 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/after/src2/pack2/UsagesFromBoth2.java @@ -0,0 +1,9 @@ +package pack2; + +import pack1.*; +import target.pack1.S1; + +public class UsagesFromBoth2 { + S1 s1; + S2 s2; +} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src1/pack1/S1.java b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src1/pack1/S1.java new file mode 100644 index 000000000000..c0a5f31dbfba --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src1/pack1/S1.java @@ -0,0 +1,3 @@ +package pack1; + +public class S1{} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src1/pack2/UsagesFromBoth.java b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src1/pack2/UsagesFromBoth.java new file mode 100644 index 000000000000..906b1fe953d6 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src1/pack2/UsagesFromBoth.java @@ -0,0 +1,8 @@ +package pack2; + +import pack1.*; + +public class UsagesFromBoth { + S1 s1; + S2 s2; +} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src1/target/empty.txt b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src1/target/empty.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src2/pack1/S2.java b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src2/pack1/S2.java new file mode 100644 index 000000000000..0bd2d2024dc6 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src2/pack1/S2.java @@ -0,0 +1,3 @@ +package pack1; + +public class S2{} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src2/pack2/UsagesFromBoth2.java b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src2/pack2/UsagesFromBoth2.java new file mode 100644 index 000000000000..d8ece1cab742 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/movePackage/before/src2/pack2/UsagesFromBoth2.java @@ -0,0 +1,8 @@ +package pack2; + +import pack1.*; + +public class UsagesFromBoth2 { + S1 s1; + S2 s2; +} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/pack2/UsagesFromBoth.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/pack2/UsagesFromBoth.java new file mode 100644 index 000000000000..e21505a4f182 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/pack2/UsagesFromBoth.java @@ -0,0 +1,11 @@ +package pack2; + +import pack1.*; +import target.pack1.S1; +import target.pack1.subpack.SS; + +public class UsagesFromBoth { + S1 s1; + S2 s2; + SS ss; +} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/target/empty.txt b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/target/empty.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/target/pack1/S1.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/target/pack1/S1.java new file mode 100644 index 000000000000..bafd60dc4fa1 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/target/pack1/S1.java @@ -0,0 +1,3 @@ +package target.pack1; + +public class S1{} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/target/pack1/subpack/SS.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/target/pack1/subpack/SS.java new file mode 100644 index 000000000000..39cf0b625314 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src1/target/pack1/subpack/SS.java @@ -0,0 +1,3 @@ +package target.pack1.subpack; + +public class SS {} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src2/pack1/S2.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src2/pack1/S2.java new file mode 100644 index 000000000000..0bd2d2024dc6 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src2/pack1/S2.java @@ -0,0 +1,3 @@ +package pack1; + +public class S2{} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src2/pack2/UsagesFromBoth2.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src2/pack2/UsagesFromBoth2.java new file mode 100644 index 000000000000..9b53f3854379 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/after/src2/pack2/UsagesFromBoth2.java @@ -0,0 +1,9 @@ +package pack2; + +import pack1.*; +import target.pack1.S1; + +public class UsagesFromBoth2 { + S1 s1; + S2 s2; +} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack1/S1.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack1/S1.java new file mode 100644 index 000000000000..c0a5f31dbfba --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack1/S1.java @@ -0,0 +1,3 @@ +package pack1; + +public class S1{} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack1/subpack/SS.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack1/subpack/SS.java new file mode 100644 index 000000000000..869423cf5146 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack1/subpack/SS.java @@ -0,0 +1,3 @@ +package pack1.subpack; + +public class SS {} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack2/UsagesFromBoth.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack2/UsagesFromBoth.java new file mode 100644 index 000000000000..b0f9a94641d2 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/pack2/UsagesFromBoth.java @@ -0,0 +1,10 @@ +package pack2; + +import pack1.*; +import pack1.subpack.*; + +public class UsagesFromBoth { + S1 s1; + S2 s2; + SS ss; +} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/target/empty.txt b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src1/target/empty.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src2/pack1/S2.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src2/pack1/S2.java new file mode 100644 index 000000000000..0bd2d2024dc6 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src2/pack1/S2.java @@ -0,0 +1,3 @@ +package pack1; + +public class S2{} diff --git a/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src2/pack2/UsagesFromBoth2.java b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src2/pack2/UsagesFromBoth2.java new file mode 100644 index 000000000000..d8ece1cab742 --- /dev/null +++ b/java/java-tests/testData/refactoring/movePackageAsDir/removeUnresolvedImports/before/src2/pack2/UsagesFromBoth2.java @@ -0,0 +1,8 @@ +package pack2; + +import pack1.*; + +public class UsagesFromBoth2 { + S1 s1; + S2 s2; +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CustomFileTypeCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CustomFileTypeCompletionTest.java index 384f491b7e65..ef35e95fd909 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CustomFileTypeCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CustomFileTypeCompletionTest.java @@ -3,11 +3,7 @@ package com.intellij.codeInsight.completion; import com.intellij.JavaTestUtil; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Oct 14, 2004 - * Time: 4:39:37 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class CustomFileTypeCompletionTest extends LightCompletionTestCase { private static final String BASE_PATH = "/codeInsight/completion/customFileType/"; diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/WordCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/WordCompletionTest.java index 22613915de80..772d769a79ab 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/WordCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/WordCompletionTest.java @@ -11,11 +11,7 @@ import com.intellij.util.ProcessingContext; import org.jetbrains.annotations.NotNull; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Oct 14, 2004 - * Time: 4:39:37 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class WordCompletionTest extends CompletionTestCase { private static final String BASE_PATH = "/codeInsight/completion/word/"; diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InlineSuperClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/InlineSuperClassTest.java index 024738cd8b0d..42106d67c43b 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InlineSuperClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/InlineSuperClassTest.java @@ -9,6 +9,7 @@ import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.inlineSuperClass.InlineSuperClassRefactoringProcessor; public class InlineSuperClassTest extends MultiFileTestCase { @@ -33,14 +34,14 @@ public class InlineSuperClassTest extends MultiFileTestCase { try { doTest(new PerformAction() { public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass aClass = myJavaFacade.findClass("Test"); + PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.allScope(myProject)); - if (aClass == null) aClass = myJavaFacade.findClass("p.Test"); + if (aClass == null) aClass = myJavaFacade.findClass("p.Test", GlobalSearchScope.allScope(myProject)); assertNotNull("Class Test not found", aClass); - PsiClass superClass = myJavaFacade.findClass("Super"); + PsiClass superClass = myJavaFacade.findClass("Super", GlobalSearchScope.allScope(myProject)); - if (superClass == null) superClass = myJavaFacade.findClass("p1.Super"); + if (superClass == null) superClass = myJavaFacade.findClass("p1.Super", GlobalSearchScope.allScope(myProject)); assertNotNull("Class Super not found", superClass); new InlineSuperClassRefactoringProcessor(getProject(), superClass, aClass).run(); @@ -162,11 +163,13 @@ public class InlineSuperClassTest extends MultiFileTestCase { public void testMultipleSubclasses() throws Exception { doTest(new PerformAction() { public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - PsiClass superClass = myJavaFacade.findClass("Super"); - if (superClass == null) superClass = myJavaFacade.findClass("p1.Super"); + PsiClass superClass = myJavaFacade.findClass("Super", GlobalSearchScope.allScope(myProject)); + if (superClass == null) superClass = myJavaFacade.findClass("p1.Super", GlobalSearchScope.allScope(myProject)); assertNotNull("Class Super not found", superClass); - new InlineSuperClassRefactoringProcessor(getProject(), superClass, myJavaFacade.findClass("Test"), myJavaFacade.findClass("Test1")).run(); + new InlineSuperClassRefactoringProcessor(getProject(), superClass, + myJavaFacade.findClass("Test", GlobalSearchScope.allScope(myProject)), + myJavaFacade.findClass("Test1", GlobalSearchScope.allScope(myProject))).run(); } }); } -} \ No newline at end of file +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableMultifileTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableMultifileTest.java index 6b90f6b2ca96..a93dec2ec651 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableMultifileTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableMultifileTest.java @@ -9,6 +9,7 @@ import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiFile; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.introduceVariable.IntroduceVariableBase; /** @@ -80,7 +81,7 @@ public class IntroduceVariableMultifileTest extends MultiFileTestCase { return new PerformAction() { public void performAction(VirtualFile vroot, VirtualFile rootAfter) { final JavaPsiFacade psiManager = getJavaFacade(); - final PsiClass aClass = psiManager.findClass(className); + final PsiClass aClass = psiManager.findClass(className, GlobalSearchScope.allScope(myProject)); assertTrue(aClass != null); final PsiFile containingFile = aClass.getContainingFile(); final VirtualFile virtualFile = containingFile.getVirtualFile(); diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MovePackageAsDirectoryTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MovePackageAsDirectoryTest.java new file mode 100644 index 000000000000..fdd9074160d6 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/refactoring/MovePackageAsDirectoryTest.java @@ -0,0 +1,82 @@ + +package com.intellij.refactoring; + +import com.intellij.JavaTestUtil; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.roots.ContentEntry; +import com.intellij.openapi.roots.ModifiableRootModel; +import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiPackage; +import com.intellij.refactoring.move.moveClassesOrPackages.MoveDirectoryWithClassesProcessor; + +import java.util.Arrays; +import java.util.Comparator; + +public class MovePackageAsDirectoryTest extends MultiFileTestCase { + + @Override + protected String getTestDataPath() { + return JavaTestUtil.getJavaTestDataPath(); + } + + protected String getTestRoot() { + return "/refactoring/movePackageAsDir/"; + } + + public void testMovePackage() throws Exception { + doTest(createAction("pack1", "target")); + } + + public void testRemoveUnresolvedImports() throws Exception { + doTest(createAction("pack1", "target")); + } + + private PerformAction createAction(final String packageName, final String targetPackageName) { + return new PerformAction() { + public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { + final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject); + final Comparator directoryComparator = new Comparator() { + public int compare(PsiDirectory o1, PsiDirectory o2) { + return o1.getVirtualFile().getPresentableUrl().compareTo(o2.getVirtualFile().getPresentableUrl()); + } + }; + + final PsiPackage sourcePackage = psiFacade.findPackage(packageName); + assertNotNull(sourcePackage); + final PsiDirectory[] srcDirectories = sourcePackage.getDirectories(); + assertEquals(srcDirectories.length, 2); + Arrays.sort(srcDirectories, directoryComparator); + + final PsiPackage targetPackage = psiFacade.findPackage(targetPackageName); + assertNotNull(targetPackage); + final PsiDirectory[] targetDirectories = targetPackage.getDirectories(); + Arrays.sort(targetDirectories, directoryComparator); + assertTrue(targetDirectories.length > 0); + + new MoveDirectoryWithClassesProcessor(getProject(), new PsiDirectory[]{srcDirectories[0]}, targetDirectories[0], false, false, true, null).run(); + FileDocumentManager.getInstance().saveAllDocuments(); + } + }; + } + + protected void setupProject(VirtualFile rootDir) { + final ModifiableRootModel rootModel = ModuleRootManager.getInstance(myModule).getModifiableModel(); + final ContentEntry contentEntry = rootModel.addContentEntry(rootDir); + final VirtualFile[] children = rootDir.getChildren(); + for (VirtualFile child : children) { + if (child.getName().startsWith("src")) { + contentEntry.addSourceFolder(child, false); + } + } + + ApplicationManager.getApplication().runWriteAction(new Runnable() { + public void run() { + rootModel.commit(); + } + }); + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/PushDownMultifileTest.java b/java/java-tests/testSrc/com/intellij/refactoring/PushDownMultifileTest.java index 4f6777090767..50b381ea2885 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/PushDownMultifileTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/PushDownMultifileTest.java @@ -11,6 +11,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; import com.intellij.psi.PsiMethod; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.memberPushDown.PushDownProcessor; import com.intellij.refactoring.util.DocCommentPolicy; import com.intellij.refactoring.util.classMembers.MemberInfo; @@ -38,10 +39,10 @@ public class PushDownMultifileTest extends MultiFileTestCase { try { doTest(new PerformAction() { public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - final PsiClass srcClass = myJavaFacade.findClass("a.A"); + final PsiClass srcClass = myJavaFacade.findClass("a.A", GlobalSearchScope.allScope(myProject)); assertTrue("Source class not found", srcClass != null); - final PsiClass targetClass = myJavaFacade.findClass("b.B"); + final PsiClass targetClass = myJavaFacade.findClass("b.B", GlobalSearchScope.allScope(myProject)); assertTrue("Target class not found", targetClass != null); final PsiMethod[] methods = srcClass.getMethods(); @@ -85,10 +86,10 @@ public class PushDownMultifileTest extends MultiFileTestCase { try { doTest(new PerformAction() { public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception { - final PsiClass srcClass = myJavaFacade.findClass("a.A"); + final PsiClass srcClass = myJavaFacade.findClass("a.A", GlobalSearchScope.allScope(myProject)); assertTrue("Source class not found", srcClass != null); - final PsiClass targetClass = myJavaFacade.findClass("b.B"); + final PsiClass targetClass = myJavaFacade.findClass("b.B", GlobalSearchScope.allScope(myProject)); assertTrue("Target class not found", targetClass != null); final PsiField[] fields = srcClass.getFields(); @@ -112,4 +113,4 @@ public class PushDownMultifileTest extends MultiFileTestCase { } fail("Conflict was not detected"); } -} \ No newline at end of file +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/TurnRefsToSuperTest.java b/java/java-tests/testSrc/com/intellij/refactoring/TurnRefsToSuperTest.java index d8963fdf20a9..a9a0e9302462 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/TurnRefsToSuperTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/TurnRefsToSuperTest.java @@ -4,6 +4,7 @@ import com.intellij.JavaTestUtil; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.turnRefsToSuper.TurnRefsToSuperProcessor; import org.jetbrains.annotations.NonNls; @@ -138,12 +139,12 @@ public class TurnRefsToSuperTest extends MultiFileTestCase { } private void performAction(final String className, final String superClassName, boolean replaceInstanceOf) { - final PsiClass aClass = myJavaFacade.findClass(className); + final PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.allScope(myProject)); assertNotNull("Class " + className + " not found", aClass); - PsiClass superClass = myJavaFacade.findClass(superClassName); + PsiClass superClass = myJavaFacade.findClass(superClassName, GlobalSearchScope.allScope(myProject)); assertNotNull("Class " + superClassName + " not found", superClass); new TurnRefsToSuperProcessor(myProject, aClass, superClass, replaceInstanceOf).run(); FileDocumentManager.getInstance().saveAllDocuments(); } -} \ No newline at end of file +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java b/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java index 516cc5d5f252..968375b7afa2 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java @@ -8,6 +8,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.typeCook.Settings; import com.intellij.refactoring.typeCook.deductive.builder.ReductionSystem; import com.intellij.refactoring.typeCook.deductive.builder.SystemBuilder; @@ -663,7 +664,7 @@ public class TypeCookTest extends MultiFileTestCase { } private void performAction(String className, String rootDir, final boolean cookObjects) throws Exception { - PsiClass aClass = myJavaFacade.findClass(className); + PsiClass aClass = myJavaFacade.findClass(className, GlobalSearchScope.allScope(myProject)); assertNotNull("Class " + className + " not found", aClass); @@ -736,8 +737,12 @@ public class TypeCookTest extends MultiFileTestCase { PrintWriter writer; if (!patternFile.exists()) { writer = new PrintWriter(new FileOutputStream(patternFile)); - writer.print(itemRepr); - writer.close(); + try { + writer.print(itemRepr); + } + finally { + writer.close(); + } System.out.println("Pattern not found, file " + patternName + " created."); @@ -747,10 +752,14 @@ public class TypeCookTest extends MultiFileTestCase { File graFile = new File(FileUtil.getTempDirectory() + File.separator + rootDir + File.separator + itemName); writer = new PrintWriter(new FileOutputStream(graFile)); + try { + writer.print(itemRepr); + } + finally { + writer.close(); + } - writer.print(itemRepr); - writer.close(); LocalFileSystem.getInstance().refreshAndFindFileByIoFile(graFile); FileDocumentManager.getInstance().saveAllDocuments(); diff --git a/java/jsp-base-openapi/src/com/intellij/lang/jsp/IBaseJspManager.java b/java/jsp-base-openapi/src/com/intellij/lang/jsp/IBaseJspManager.java index 52ac367ed5fe..a7fabc4e3bf5 100644 --- a/java/jsp-base-openapi/src/com/intellij/lang/jsp/IBaseJspManager.java +++ b/java/jsp-base-openapi/src/com/intellij/lang/jsp/IBaseJspManager.java @@ -15,18 +15,14 @@ */ package com.intellij.lang.jsp; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; +import com.intellij.psi.PsiFile; import com.intellij.xml.XmlElementDescriptor; import com.intellij.xml.XmlNSDescriptor; -import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: 20.04.2009 - * Time: 17:07:57 - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public interface IBaseJspManager { XmlNSDescriptor getActionsLibrary(@NotNull PsiFile containingFile); diff --git a/java/jsp-base-openapi/src/com/intellij/lang/jsp/JspFileViewProvider.java b/java/jsp-base-openapi/src/com/intellij/lang/jsp/JspFileViewProvider.java index f1bb9cf5b460..d0bb429508c0 100644 --- a/java/jsp-base-openapi/src/com/intellij/lang/jsp/JspFileViewProvider.java +++ b/java/jsp-base-openapi/src/com/intellij/lang/jsp/JspFileViewProvider.java @@ -22,14 +22,11 @@ import org.jetbrains.annotations.NotNull; import java.util.Set; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: Dec 12, 2005 - * Time: 3:28:22 PM - * To change this template use File | Settings | File Templates. + * @author ik */ public interface JspFileViewProvider extends JspxFileViewProvider { @NotNull Language getTemplateDataLanguage(); + Set getKnownTaglibPrefixes(); } diff --git a/java/jsp-base-openapi/src/com/intellij/lang/jsp/JspxFileViewProvider.java b/java/jsp-base-openapi/src/com/intellij/lang/jsp/JspxFileViewProvider.java index 3c960d432bb0..31784036be6f 100644 --- a/java/jsp-base-openapi/src/com/intellij/lang/jsp/JspxFileViewProvider.java +++ b/java/jsp-base-openapi/src/com/intellij/lang/jsp/JspxFileViewProvider.java @@ -16,21 +16,17 @@ package com.intellij.lang.jsp; -import com.intellij.lang.Language; import com.intellij.lang.DependentLanguage; +import com.intellij.lang.Language; import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: Dec 12, 2005 - * Time: 7:40:40 PM - * To change this template use File | Settings | File Templates. + * @author ik */ public interface JspxFileViewProvider extends TemplateLanguageFileViewProvider { Language JAVA_HOLDER_METHOD_TREE_LANGUAGE = new JavaHolderMethodTreeLanguage(); - public static class JavaHolderMethodTreeLanguage extends Language implements DependentLanguage{ + class JavaHolderMethodTreeLanguage extends Language implements DependentLanguage{ public JavaHolderMethodTreeLanguage() { super("JAVA_HOLDER_METHOD_TREE", ""); } diff --git a/java/jsp-base-openapi/src/com/intellij/lexer/ELHostLexer.java b/java/jsp-base-openapi/src/com/intellij/lexer/ELHostLexer.java index 6c0bbe95dde1..9a8c60220781 100644 --- a/java/jsp-base-openapi/src/com/intellij/lexer/ELHostLexer.java +++ b/java/jsp-base-openapi/src/com/intellij/lexer/ELHostLexer.java @@ -18,12 +18,8 @@ package com.intellij.lexer; import com.intellij.psi.tree.IElementType; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: May 13, 2005 - * Time: 1:34:29 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public interface ELHostLexer { - void setElTypes(IElementType elTokenTypeForContent,IElementType elTokenTypeForAttribute); + void setElTypes(IElementType elTokenTypeForContent, IElementType elTokenTypeForAttribute); } diff --git a/java/jsp-spi/src/com/intellij/jsp/impl/TldAttributeDescriptor.java b/java/jsp-spi/src/com/intellij/jsp/impl/TldAttributeDescriptor.java index 781d05524941..5dbc7024806a 100644 --- a/java/jsp-spi/src/com/intellij/jsp/impl/TldAttributeDescriptor.java +++ b/java/jsp-spi/src/com/intellij/jsp/impl/TldAttributeDescriptor.java @@ -19,22 +19,20 @@ import com.intellij.xml.XmlAttributeDescriptor; import org.jetbrains.annotations.Nullable; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Jan 26, 2007 - * Time: 7:03:23 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public interface TldAttributeDescriptor extends XmlAttributeDescriptor { /** * Indicates that attribute is a fragment + * * @return */ boolean isIndirectSyntax(); /** * Returns method signature for deferred methods + * * @return */ @Nullable @@ -42,6 +40,7 @@ public interface TldAttributeDescriptor extends XmlAttributeDescriptor { /** * Returns value of "type" subtag + * * @return */ @Nullable diff --git a/java/openapi/src/com/intellij/ide/palette/PaletteGroup.java b/java/openapi/src/com/intellij/ide/palette/PaletteGroup.java index 56c4deda0b76..a19c1ab8e60d 100644 --- a/java/openapi/src/com/intellij/ide/palette/PaletteGroup.java +++ b/java/openapi/src/com/intellij/ide/palette/PaletteGroup.java @@ -49,7 +49,7 @@ public interface PaletteGroup { * Returns the data for the specified data constant. * * @param project the project in the context of which data is requested. - * @param dataId the data constant id (see {@link com.intellij.openapi.actionSystem.DataConstants}). + * @param dataId the data constant id (see {@link com.intellij.openapi.actionSystem.PlatformDataKeys}). * @return the data item, or null if no data is available for this constant. */ @Nullable Object getData(Project project, String dataId); diff --git a/java/openapi/src/com/intellij/ide/palette/PaletteItem.java b/java/openapi/src/com/intellij/ide/palette/PaletteItem.java index 8180cceb722c..372839d67266 100644 --- a/java/openapi/src/com/intellij/ide/palette/PaletteItem.java +++ b/java/openapi/src/com/intellij/ide/palette/PaletteItem.java @@ -16,14 +16,12 @@ package com.intellij.ide.palette; +import com.intellij.ide.dnd.DnDDragStartBean; import com.intellij.openapi.actionSystem.ActionGroup; import com.intellij.openapi.project.Project; import com.intellij.ui.ColoredListCellRenderer; -import com.intellij.ide.dnd.DnDDragStartBean; import org.jetbrains.annotations.Nullable; -import java.awt.datatransfer.Transferable; - /** * @author yole */ @@ -51,7 +49,7 @@ public interface PaletteItem { * Returns the data for the specified data constant. * * @param project the project in the context of which data is requested. - * @param dataId the data constant id (see {@link com.intellij.openapi.actionSystem.DataConstants}). + * @param dataId the data constant id (see {@link com.intellij.openapi.actionSystem.PlatformDataKeys}). * @return the data item, or null if no data is available for this constant. */ @Nullable Object getData(Project project, String dataId); diff --git a/java/openapi/src/com/intellij/openapi/actionSystem/DataKeys.java b/java/openapi/src/com/intellij/openapi/actionSystem/DataKeys.java index bf48dca0f1c7..da0409405697 100644 --- a/java/openapi/src/com/intellij/openapi/actionSystem/DataKeys.java +++ b/java/openapi/src/com/intellij/openapi/actionSystem/DataKeys.java @@ -31,9 +31,9 @@ public final class DataKeys extends LangDataKeys { } @Deprecated - public static final DataKey CHANGE_LISTS = DataKey.create(DataConstants.CHANGE_LISTS); + public static final DataKey CHANGE_LISTS = DataKey.create("vcs.ChangeList"); @Deprecated - public static final DataKey CHANGES = DataKey.create(DataConstants.CHANGES); + public static final DataKey CHANGES = DataKey.create("vcs.Change"); } diff --git a/java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java b/java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java index c7909d2ad700..c1aa5428a17f 100644 --- a/java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java @@ -555,7 +555,7 @@ public abstract class CodeInsightTestCase extends PsiTestCase { } public Object getData(String dataId) { - return dataId.equals(DataConstants.EDITOR) ? myEditor : super.getData(dataId); + return PlatformDataKeys.EDITOR.is(dataId) ? myEditor : super.getData(dataId); } protected VirtualFile getVirtualFile(@NonNls String filePath) { diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java index d0bd554bf1c5..40cf8c048143 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java @@ -16,6 +16,7 @@ package com.intellij.codeInsight.daemon; import com.intellij.codeHighlighting.Pass; +import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl; import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.injected.editor.EditorWindow; import com.intellij.openapi.editor.Editor; @@ -46,7 +47,8 @@ public abstract class LightDaemonAnalyzerTestCase extends LightCodeInsightTestCa @Override protected void tearDown() throws Exception { - DaemonCodeAnalyzer.getInstance(getProject()).projectClosed(); + DaemonCodeAnalyzerImpl codeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(getProject()); + codeAnalyzer.projectClosed(); super.tearDown(); } diff --git a/platform/lang-api/src/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java b/platform/lang-api/src/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java index 416750fafc9e..4c88a5aede99 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java +++ b/platform/lang-api/src/com/intellij/codeInsight/editorActions/smartEnter/SmartEnterProcessor.java @@ -31,11 +31,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Sep 5, 2003 - * Time: 3:31:23 PM - * To change this template use Options | File Templates. + * @author max */ public abstract class SmartEnterProcessor { public abstract boolean process(@NotNull final Project project, @NotNull final Editor editor, @NotNull final PsiFile psiFile); diff --git a/platform/lang-api/src/com/intellij/codeInsight/intention/PreferredAction.java b/platform/lang-api/src/com/intellij/codeInsight/intention/PreferredAction.java new file mode 100644 index 000000000000..0dda5015847b --- /dev/null +++ b/platform/lang-api/src/com/intellij/codeInsight/intention/PreferredAction.java @@ -0,0 +1,27 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInsight.intention; + +/** + * Marker interface for intentions and quick fixes. + * Marked actions are shown on the top of the list and are separated from the others. + * + * @author Dmitry Avdeev + * @see com.intellij.codeInsight.intention.IntentionAction + * @see com.intellij.codeInspection.LocalQuickFix + */ +public interface PreferredAction { +} diff --git a/platform/lang-api/src/com/intellij/diagnostic/logging/IndependentLogFilter.java b/platform/lang-api/src/com/intellij/diagnostic/logging/IndependentLogFilter.java index f3a99a13781b..b4ffe858df94 100644 --- a/platform/lang-api/src/com/intellij/diagnostic/logging/IndependentLogFilter.java +++ b/platform/lang-api/src/com/intellij/diagnostic/logging/IndependentLogFilter.java @@ -17,11 +17,7 @@ package com.intellij.diagnostic.logging; /** - * Created by IntelliJ IDEA. - * User: Eugene.Kudelevsky - * Date: Sep 11, 2009 - * Time: 2:34:25 PM - * To change this template use File | Settings | File Templates. + * @author Eugene.Kudelevsky */ public abstract class IndependentLogFilter extends LogFilter { protected IndependentLogFilter(String name) { diff --git a/platform/lang-api/src/com/intellij/execution/ExecutionBundle.java b/platform/lang-api/src/com/intellij/execution/ExecutionBundle.java index af072abc1c3e..a9f20c7be1f3 100644 --- a/platform/lang-api/src/com/intellij/execution/ExecutionBundle.java +++ b/platform/lang-api/src/com/intellij/execution/ExecutionBundle.java @@ -24,11 +24,7 @@ import java.lang.ref.SoftReference; import java.util.ResourceBundle; /** - * Created by IntelliJ IDEA. - * User: lesya - * Date: Aug 29, 2005 - * Time: 11:45:48 PM - * To change this template use File | Settings | File Templates. + * @author lesya */ public class ExecutionBundle { private static Reference ourBundle; diff --git a/platform/lang-api/src/com/intellij/execution/Location.java b/platform/lang-api/src/com/intellij/execution/Location.java index 8babfe7f402b..5c8afd642955 100644 --- a/platform/lang-api/src/com/intellij/execution/Location.java +++ b/platform/lang-api/src/com/intellij/execution/Location.java @@ -15,6 +15,7 @@ */ package com.intellij.execution; +import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; @@ -28,7 +29,8 @@ import org.jetbrains.annotations.Nullable; import java.util.Iterator; public abstract class Location { - @NonNls public static final String LOCATION = "Location"; + public static final DataKey> DATA_KEY = DataKey.create("Location"); + @Deprecated @NonNls public static final String LOCATION = DATA_KEY.getName(); @NotNull public abstract E getPsiElement(); @NotNull public abstract Project getProject(); diff --git a/platform/lang-api/src/com/intellij/execution/configurations/RuntimeConfiguration.java b/platform/lang-api/src/com/intellij/execution/configurations/RuntimeConfiguration.java index cdaa7ecd26eb..8d9aab064172 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/RuntimeConfiguration.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/RuntimeConfiguration.java @@ -17,6 +17,7 @@ package com.intellij.execution.configurations; import com.intellij.execution.runners.ProgramRunner; +import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; @@ -24,9 +25,9 @@ import com.intellij.openapi.util.JDOMExternalizable; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import javax.swing.*; - public abstract class RuntimeConfiguration extends RunConfigurationBase implements LocatableConfiguration, Cloneable, ModuleRunConfiguration { + public static final DataKey DATA_KEY = DataKey.create("runtimeConfiguration"); + protected RuntimeConfiguration(final String name, final Project project, final ConfigurationFactory factory) { super(project, factory, name); } @@ -59,4 +60,4 @@ public abstract class RuntimeConfiguration extends RunConfigurationBase implemen @NonNls public String suggestedName() { return null; } -} \ No newline at end of file +} diff --git a/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java b/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java index 287bbeec0fdb..82eb66b03cc0 100644 --- a/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java +++ b/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java @@ -27,6 +27,7 @@ import com.intellij.history.LocalHistory; import com.intellij.history.LocalHistoryConfiguration; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.options.SettingsEditor; @@ -40,10 +41,12 @@ import org.jetbrains.annotations.Nullable; * @author spleaner */ public abstract class GenericProgramRunner implements ProgramRunner { + /** * @see com.intellij.execution.ui.RunContentDescriptor#myContent */ - @NonNls public static final String CONTENT_TO_REUSE = "contentToReuse"; + public static final DataKey CONTENT_TO_REUSE_DATA_KEY = DataKey.create("contentToReuse"); + @Deprecated @NonNls public static final String CONTENT_TO_REUSE = CONTENT_TO_REUSE_DATA_KEY.getName(); @Nullable public Settings createConfigurationData(final ConfigurationInfoProvider settingsProvider) { diff --git a/platform/lang-api/src/com/intellij/execution/ui/actions/BaseViewAction.java b/platform/lang-api/src/com/intellij/execution/ui/actions/BaseViewAction.java index e86338fc2182..07feeb2b6c61 100644 --- a/platform/lang-api/src/com/intellij/execution/ui/actions/BaseViewAction.java +++ b/platform/lang-api/src/com/intellij/execution/ui/actions/BaseViewAction.java @@ -32,12 +32,26 @@ public abstract class BaseViewAction extends DumbAwareAction { Content[] content = getContent(e); if (context != null && content != null) { - update(e, context, content); + if (containsInvalidContent(content)) { + e.getPresentation().setEnabled(false); + } else { + update(e, context, content); + } } else { e.getPresentation().setEnabled(false); } } + private boolean containsInvalidContent(Content[] content) { + for (Content each : content) { + if (!each.isValid()) { + return true; + } + } + + return false; + } + protected void update(AnActionEvent e, ViewContext context, Content[] content) { } diff --git a/platform/lang-api/src/com/intellij/ide/IdeView.java b/platform/lang-api/src/com/intellij/ide/IdeView.java index 7e201996a295..7ee910f0925f 100644 --- a/platform/lang-api/src/com/intellij/ide/IdeView.java +++ b/platform/lang-api/src/com/intellij/ide/IdeView.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable; * favorites or commander). * * @since 5.1 - * @see com.intellij.openapi.actionSystem.DataConstants#IDE_VIEW + * @see com.intellij.openapi.actionSystem.PlatformDataKeys#IDE_VIEW */ public interface IdeView { /** diff --git a/platform/lang-api/src/com/intellij/ide/projectView/TreeStructureProvider.java b/platform/lang-api/src/com/intellij/ide/projectView/TreeStructureProvider.java index b922e3eac386..058d0e1392ef 100644 --- a/platform/lang-api/src/com/intellij/ide/projectView/TreeStructureProvider.java +++ b/platform/lang-api/src/com/intellij/ide/projectView/TreeStructureProvider.java @@ -49,7 +49,7 @@ public interface TreeStructureProvider { * * @param selected the list of nodes currently selected in the project view. * @param dataName the identifier of the requested data object (for example, as defined in - * {@link com.intellij.openapi.actionSystem.DataConstants}) + * {@link com.intellij.openapi.actionSystem.PlatformDataKeys}) * @return the data object, or null if no data object can be returned by this provider. * @see com.intellij.openapi.actionSystem.DataProvider */ diff --git a/platform/lang-api/src/com/intellij/openapi/actionSystem/LangDataKeys.java b/platform/lang-api/src/com/intellij/openapi/actionSystem/LangDataKeys.java index 83bcba4adec0..80bb6c7ad69c 100644 --- a/platform/lang-api/src/com/intellij/openapi/actionSystem/LangDataKeys.java +++ b/platform/lang-api/src/com/intellij/openapi/actionSystem/LangDataKeys.java @@ -18,6 +18,7 @@ package com.intellij.openapi.actionSystem; import com.intellij.ide.IdeView; import com.intellij.lang.Language; +import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiElement; @@ -27,13 +28,25 @@ import com.intellij.psi.PsiFile; * @author yole */ public class LangDataKeys extends PlatformDataKeys { - public static final DataKey MODULE = DataKey.create(DataConstants.MODULE); - public static final DataKey MODULE_CONTEXT = DataKey.create(DataConstants.MODULE_CONTEXT); - public static final DataKey MODULE_CONTEXT_ARRAY = DataKey.create(DataConstants.MODULE_CONTEXT_ARRAY); - public static final DataKey PSI_ELEMENT = DataKey.create(DataConstants.PSI_ELEMENT); - public static final DataKey PSI_FILE = DataKey.create(DataConstants.PSI_FILE); - public static final DataKey LANGUAGE = DataKey.create(DataConstants.LANGUAGE); - public static final DataKey PSI_ELEMENT_ARRAY = DataKey.create(DataConstants.PSI_ELEMENT_ARRAY); - public static final DataKey IDE_VIEW = DataKey.create(DataConstants.IDE_VIEW); + public static final DataKey MODULE = DataKey.create("module"); + /** + * Returns module if module node is selected (in module view) + */ + public static final DataKey MODULE_CONTEXT = DataKey.create("context.Module"); + public static final DataKey MODULE_CONTEXT_ARRAY = DataKey.create("context.Module.Array"); + public static final DataKey MODIFIABLE_MODULE_MODEL = DataKey.create("modifiable.module.model"); + + public static final DataKey PSI_ELEMENT = DataKey.create("psi.Element"); + public static final DataKey PSI_FILE = DataKey.create("psi.File"); + public static final DataKey LANGUAGE = DataKey.create("Language"); + public static final DataKey PSI_ELEMENT_ARRAY = DataKey.create("psi.Element.array"); + + /** + * Returns {@link com.intellij.ide.IdeView} (one of project, packages, commander or favorites view). + */ + public static final DataKey IDE_VIEW = DataKey.create("IDEView"); public static final DataKey> PRESELECT_NEW_ACTION_CONDITION = DataKey.create("newElementAction.preselect.id"); + + public static final DataKey TARGET_PSI_ELEMENT = DataKey.create("psi.TargetElement"); + public static final DataKey PASTE_TARGET_PSI_ELEMENT = DataKey.create("psi.pasteTargetElement"); } diff --git a/platform/lang-api/src/com/intellij/pom/PomTransaction.java b/platform/lang-api/src/com/intellij/pom/PomTransaction.java index b8ff3c90802f..679b00a45050 100644 --- a/platform/lang-api/src/com/intellij/pom/PomTransaction.java +++ b/platform/lang-api/src/com/intellij/pom/PomTransaction.java @@ -20,15 +20,14 @@ import com.intellij.psi.PsiElement; import com.intellij.util.IncorrectOperationException; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: Oct 6, 2004 - * Time: 9:48:15 PM - * To change this template use File | Settings | File Templates. + * @author ik */ -public interface PomTransaction{ +public interface PomTransaction { PomModelEvent getAccumulatedEvent(); + void run() throws IncorrectOperationException; + PsiElement getChangeScope(); + PomModelAspect getTransactionAspect(); } diff --git a/platform/lang-api/src/com/intellij/pom/tree/events/TreeChange.java b/platform/lang-api/src/com/intellij/pom/tree/events/TreeChange.java index 904497e1855d..ab2cd838c742 100644 --- a/platform/lang-api/src/com/intellij/pom/tree/events/TreeChange.java +++ b/platform/lang-api/src/com/intellij/pom/tree/events/TreeChange.java @@ -18,21 +18,19 @@ package com.intellij.pom.tree.events; import com.intellij.lang.ASTNode; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: Oct 6, 2004 - * Time: 11:00:28 PM - * To change this template use File | Settings | File Templates. + * @author ik */ - public interface TreeChange { void addChange(ASTNode child, ChangeInfo changeInfo); ASTNode[] getAffectedChildren(); + ChangeInfo getChangeByChild(ASTNode child); + int getChildOffsetInNewTree(ASTNode child); void composite(TreeChange treeChange); + boolean isEmpty(); void removeChange(ASTNode beforeEqualDepth); diff --git a/platform/lang-api/src/com/intellij/pom/tree/events/TreeChangeEvent.java b/platform/lang-api/src/com/intellij/pom/tree/events/TreeChangeEvent.java index 8cc8097a10fb..4485fe63e7ff 100644 --- a/platform/lang-api/src/com/intellij/pom/tree/events/TreeChangeEvent.java +++ b/platform/lang-api/src/com/intellij/pom/tree/events/TreeChangeEvent.java @@ -19,17 +19,16 @@ import com.intellij.lang.ASTNode; import com.intellij.pom.event.PomChangeSet; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: Oct 6, 2004 - * Time: 10:56:52 PM - * To change this template use File | Settings | File Templates. + * @author ik */ -public interface TreeChangeEvent extends PomChangeSet{ +public interface TreeChangeEvent extends PomChangeSet { ASTNode getRootElement(); + ASTNode[] getChangedElements(); + TreeChange getChangesByElement(ASTNode element); void addElementaryChange(ASTNode child, ChangeInfo change); + void clear(); } diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java index 5a3376679f27..7a838c6165a2 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettings.java @@ -164,7 +164,7 @@ public class CodeStyleSettings implements Cloneable, JDOMExternalizable { field.set(to, field.get(from)); } else { - System.out.println("Field not copied " + field.getName()); + throw new RuntimeException("Field not copied " + field.getName()); } } diff --git a/platform/lang-api/src/com/intellij/psi/meta/PsiWritableMetaData.java b/platform/lang-api/src/com/intellij/psi/meta/PsiWritableMetaData.java index e5c58507f1d0..223efe6be092 100644 --- a/platform/lang-api/src/com/intellij/psi/meta/PsiWritableMetaData.java +++ b/platform/lang-api/src/com/intellij/psi/meta/PsiWritableMetaData.java @@ -18,11 +18,7 @@ package com.intellij.psi.meta; import com.intellij.util.IncorrectOperationException; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Apr 18, 2005 - * Time: 2:41:47 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public interface PsiWritableMetaData extends PsiMetaData { void setName(String name) throws IncorrectOperationException; diff --git a/platform/lang-api/src/com/intellij/psi/search/ProjectScope.java b/platform/lang-api/src/com/intellij/psi/search/ProjectScope.java index 83cc6be033de..56d750efce0a 100644 --- a/platform/lang-api/src/com/intellij/psi/search/ProjectScope.java +++ b/platform/lang-api/src/com/intellij/psi/search/ProjectScope.java @@ -63,9 +63,11 @@ public class ProjectScope { private final ProjectFileIndex myFileIndex = projectRootManager.getFileIndex(); public boolean contains(VirtualFile file) { - if (myFileIndex.isInLibraryClasses(file)) return false; + if (file instanceof VirtualFileWindow) return true; - return file instanceof VirtualFileWindow || myFileIndex.isInContent(file); + if (myFileIndex.isInLibraryClasses(file) && !myFileIndex.isInSourceContent(file)) return false; + + return myFileIndex.isInContent(file); } public int compare(VirtualFile file1, VirtualFile file2) { @@ -107,4 +109,4 @@ public class ProjectScope { } return projectScope; } -} \ No newline at end of file +} diff --git a/platform/lang-api/src/com/intellij/usageView/UsageViewBundle.java b/platform/lang-api/src/com/intellij/usageView/UsageViewBundle.java index 799cec328b11..ebbff1026939 100644 --- a/platform/lang-api/src/com/intellij/usageView/UsageViewBundle.java +++ b/platform/lang-api/src/com/intellij/usageView/UsageViewBundle.java @@ -25,11 +25,7 @@ import java.lang.ref.SoftReference; import java.util.ResourceBundle; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 11.08.2005 - * Time: 16:04:31 - * To change this template use File | Settings | File Templates. + * @author yole */ public class UsageViewBundle { private static Reference ourBundle; diff --git a/platform/lang-api/src/com/intellij/util/CharTable.java b/platform/lang-api/src/com/intellij/util/CharTable.java index a54730d6645a..3355e1bdce49 100644 --- a/platform/lang-api/src/com/intellij/util/CharTable.java +++ b/platform/lang-api/src/com/intellij/util/CharTable.java @@ -18,13 +18,9 @@ package com.intellij.util; import com.intellij.openapi.util.Key; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: 07.06.2004 - * Time: 15:28:03 - * To change this template use File | Settings | File Templates. + * @author ik */ -public interface CharTable{ +public interface CharTable { int PAGE_SIZE = 256; Key CHAR_TABLE_KEY = new Key("Char table"); diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/ColorSettingsUtil.java b/platform/lang-impl/src/com/intellij/application/options/colors/ColorSettingsUtil.java index 4dce0422bb92..4bdca9d42a14 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/ColorSettingsUtil.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/ColorSettingsUtil.java @@ -16,24 +16,23 @@ package com.intellij.application.options.colors; -import com.intellij.openapi.editor.colors.TextAttributesKey; -import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.colors.EditorColorsManager; +import com.intellij.openapi.editor.colors.EditorColorsScheme; +import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.colors.impl.EditorColorsManagerImpl; -import com.intellij.openapi.options.colors.ColorSettingsPage; import com.intellij.openapi.options.colors.AttributesDescriptor; +import com.intellij.openapi.options.colors.ColorSettingsPage; import com.intellij.util.containers.HashMap; import java.util.Map; /** - * Created by IntelliJ IDEA. - * User: lesya - * Date: Oct 23, 2008 - * Time: 4:28:18 PM - * To change this template use File | Settings | File Templates. + * @author lesya */ public class ColorSettingsUtil { + private ColorSettingsUtil() { + } + public static Map keyToDisplayTextMap(final ColorSettingsPage page) { final AttributesDescriptor[] attributeDescriptors = page.getAttributeDescriptors(); final Map displayText = new HashMap(); diff --git a/platform/lang-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.java b/platform/lang-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.java index cbd28327db47..ac87af126244 100644 --- a/platform/lang-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.java +++ b/platform/lang-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.java @@ -16,15 +16,15 @@ package com.intellij.application.options.editor; -import com.intellij.openapi.options.ConfigurationException; -import com.intellij.openapi.application.ApplicationBundle; import com.intellij.ide.ui.UISettings; +import com.intellij.openapi.application.ApplicationBundle; +import com.intellij.openapi.options.ConfigurationException; import org.jetbrains.annotations.Nls; import javax.swing.*; import java.awt.*; -import java.awt.event.ItemListener; import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; /** * @author yole @@ -76,7 +76,7 @@ public class EditorTabsConfigurable implements EditorOptionsProvider { } public Icon getIcon() { - return null; //To change body of implemented methods use File | Settings | File Templates. + return null; } public String getHelpTopic() { @@ -151,7 +151,7 @@ public class EditorTabsConfigurable implements EditorOptionsProvider { public boolean isModified() { final UISettings uiSettings = UISettings.getInstance(); - boolean isModified = isModified(myCbModifiedTabsMarkedWithAsterisk, uiSettings.MARK_MODIFIED_TABS_WITH_ASTERISK);; + boolean isModified = isModified(myCbModifiedTabsMarkedWithAsterisk, uiSettings.MARK_MODIFIED_TABS_WITH_ASTERISK); isModified |= isModified(myEditorTabLimitField, uiSettings.EDITOR_TAB_LIMIT); int tabPlacement = ((Integer)myEditorTabPlacement.getSelectedItem()).intValue(); isModified |= tabPlacement != uiSettings.EDITOR_TAB_PLACEMENT; @@ -167,7 +167,6 @@ public class EditorTabsConfigurable implements EditorOptionsProvider { } public void disposeUIResources() { - //To change body of implemented methods use File | Settings | File Templates. } @@ -196,16 +195,16 @@ public class EditorTabsConfigurable implements EditorOptionsProvider { if (UISettings.TABS_NONE == tabPlacement) { text = ApplicationBundle.message("combobox.tab.placement.none"); } - else if (SwingConstants.TOP == tabPlacement) { + else if (TOP == tabPlacement) { text = ApplicationBundle.message("combobox.tab.placement.top"); } - else if (SwingConstants.LEFT == tabPlacement) { + else if (LEFT == tabPlacement) { text = ApplicationBundle.message("combobox.tab.placement.left"); } - else if (SwingConstants.BOTTOM == tabPlacement) { + else if (BOTTOM == tabPlacement) { text = ApplicationBundle.message("combobox.tab.placement.bottom"); } - else if (SwingConstants.RIGHT == tabPlacement) { + else if (RIGHT == tabPlacement) { text = ApplicationBundle.message("combobox.tab.placement.right"); } else { diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/CodeEditorBundle.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/CodeEditorBundle.java index 0655833eaacf..ab636b1f9fd4 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/CodeEditorBundle.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/CodeEditorBundle.java @@ -25,11 +25,7 @@ import java.lang.ref.SoftReference; import java.util.ResourceBundle; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 30.08.2005 - * Time: 18:49:13 - * To change this template use File | Settings | File Templates. + * @author yole */ public class CodeEditorBundle { private static Reference ourBundle; diff --git a/platform/lang-impl/src/com/intellij/codeEditor/printing/HelpID.java b/platform/lang-impl/src/com/intellij/codeEditor/printing/HelpID.java index f85b5654ec1f..973825c47c49 100644 --- a/platform/lang-impl/src/com/intellij/codeEditor/printing/HelpID.java +++ b/platform/lang-impl/src/com/intellij/codeEditor/printing/HelpID.java @@ -19,11 +19,7 @@ package com.intellij.codeEditor.printing; import org.jetbrains.annotations.NonNls; /** - * Created by IntelliJ IDEA. - * User: Alexander.Chernikov - * Date: 20.10.2006 - * Time: 18:55:05 - * To change this template use File | Settings | File Templates. + * @author Alexander.Chernikov */ public interface HelpID { @NonNls String EXPORT_TO_HTML = "reference.file.exportToHtml"; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsAction.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsAction.java index 2238bfa77176..efc13e6d1cb1 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/OptimizeImportsAction.java @@ -37,10 +37,13 @@ public class OptimizeImportsAction extends AnAction { public static void actionPerformedImpl(final DataContext dataContext) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); + if (project == null) { + return; + } PsiDocumentManager.getInstance(project).commitAllDocuments(); final Editor editor = BaseCodeInsightAction.getInjectedEditor(project, PlatformDataKeys.EDITOR.getData(dataContext)); - final VirtualFile[] files = (VirtualFile[])dataContext.getData(DataConstants.VIRTUAL_FILE_ARRAY); + final VirtualFile[] files = PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); PsiFile file = null; PsiDirectory dir; @@ -59,7 +62,7 @@ public class OptimizeImportsAction extends AnAction { } else{ Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext); - Module moduleContext = (Module)dataContext.getData(DataConstants.MODULE_CONTEXT); + Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext); if (projectContext != null || moduleContext != null) { final String text; @@ -131,7 +134,7 @@ public class OptimizeImportsAction extends AnAction { return; } - final VirtualFile[] files = (VirtualFile[])dataContext.getData(DataConstants.VIRTUAL_FILE_ARRAY); + final VirtualFile[] files = PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); final Editor editor = BaseCodeInsightAction.getInjectedEditor(project, PlatformDataKeys.EDITOR.getData(dataContext), false); if (editor != null){ @@ -161,8 +164,8 @@ public class OptimizeImportsAction extends AnAction { else if (files != null && files.length == 1) { // skip. Both directories and single files are supported. } - else if (dataContext.getData(DataConstants.MODULE_CONTEXT) == null && - dataContext.getData(DataConstants.PROJECT_CONTEXT) == null) { + else if (LangDataKeys.MODULE_CONTEXT.getData(dataContext) == null && + PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext) == null) { PsiElement element = LangDataKeys.PSI_ELEMENT.getData(dataContext); if (element == null){ presentation.setEnabled(false); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatCodeAction.java b/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatCodeAction.java index 06d435059446..7518be0a4efc 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatCodeAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/ReformatCodeAction.java @@ -23,8 +23,8 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.DumbAware; -import com.intellij.openapi.project.Project; import com.intellij.openapi.project.DumbService; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.ReadonlyStatusHandler; import com.intellij.openapi.vfs.VirtualFile; @@ -39,9 +39,15 @@ public class ReformatCodeAction extends AnAction implements DumbAware { public void actionPerformed(AnActionEvent event) { DataContext dataContext = event.getDataContext(); final Project project = PlatformDataKeys.PROJECT.getData(dataContext); + if (project == null) { + return; + } PsiDocumentManager.getInstance(project).commitAllDocuments(); final Editor editor = PlatformDataKeys.EDITOR.getData(dataContext); - final VirtualFile[] files = (VirtualFile[])dataContext.getData(DataConstants.VIRTUAL_FILE_ARRAY); + final VirtualFile[] files = PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); + if (files == null) { + return; + } PsiFile file = null; final PsiDirectory dir; @@ -71,7 +77,7 @@ public class ReformatCodeAction extends AnAction implements DumbAware { } else{ Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext); - Module moduleContext = (Module)dataContext.getData(DataConstants.MODULE_CONTEXT); + Module moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataContext); if (projectContext != null || moduleContext != null) { final String text; @@ -172,7 +178,7 @@ public class ReformatCodeAction extends AnAction implements DumbAware { Editor editor = PlatformDataKeys.EDITOR.getData(dataContext); - final VirtualFile[] files = (VirtualFile[])dataContext.getData(DataConstants.VIRTUAL_FILE_ARRAY); + final VirtualFile[] files = PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext); if (editor != null){ PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); @@ -211,8 +217,8 @@ public class ReformatCodeAction extends AnAction implements DumbAware { else if (files != null && files.length == 1) { // skip. Both directories and single files are supported. } - else if (dataContext.getData(DataConstants.MODULE_CONTEXT) == null && - dataContext.getData(DataConstants.PROJECT_CONTEXT) == null) { + else if (LangDataKeys.MODULE_CONTEXT.getData(dataContext) == null && + PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext) == null) { PsiElement element = LangDataKeys.PSI_ELEMENT.getData(dataContext); if (element == null) { presentation.setEnabled(false); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionVariant.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionVariant.java index a0f643b15c08..ab9607da4ab8 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionVariant.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionVariant.java @@ -34,13 +34,8 @@ import org.jetbrains.annotations.NonNls; import java.util.*; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: 31.01.2003 - * Time: 17:38:14 - * To change this template use Options | File Templates. + * @author ik */ - public class CompletionVariant { protected static final TailType DEFAULT_TAIL_TYPE = TailType.SPACE; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/KeywordChooser.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/KeywordChooser.java index 8a330e8cbf0d..7f5bbfb79333 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/KeywordChooser.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/KeywordChooser.java @@ -19,11 +19,7 @@ package com.intellij.codeInsight.completion; import com.intellij.psi.PsiElement; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: 17.02.2003 - * Time: 16:53:09 - * To change this template use Options | File Templates. + * @author ik */ public interface KeywordChooser{ String[] getKeywords(CompletionContext context, PsiElement position); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/SyntaxTableCompletionData.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/SyntaxTableCompletionData.java index 7f2c4e5d76b8..3ab6579593ab 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/SyntaxTableCompletionData.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/SyntaxTableCompletionData.java @@ -22,11 +22,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.filters.TrueFilter; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Oct 14, 2004 - * Time: 4:28:39 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class SyntaxTableCompletionData extends CompletionData{ private final SyntaxTable mySyntaxTable; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/HippieWordCompletionHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/HippieWordCompletionHandler.java index 888c1b770006..5207f8d26456 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/HippieWordCompletionHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/HippieWordCompletionHandler.java @@ -35,11 +35,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; /** - * Created by IntelliJ IDEA. - * User: mike - * Date: May 11, 2006 - * Time: 3:48:48 PM - * To change this template use File | Settings | File Templates. + * @author mike */ public class HippieWordCompletionHandler implements CodeInsightActionHandler { private static final Key KEY_STATE = new Key("HIPPIE_COMPLETION_STATE"); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/Validator.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/Validator.java index 73572efff971..2b208430901a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/Validator.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/Validator.java @@ -21,11 +21,7 @@ import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Jan 14, 2005 - * Time: 10:53:20 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public interface Validator { interface ValidationHost { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java index c0d7fd498f5b..57353aafea0c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java @@ -361,7 +361,7 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzer implements JDOMEx if (myUpdateProgress != null) { myUpdateProgress.cancel(); - myPassExecutorService.cancelAll(); + myPassExecutorService.cancelAll(false); cancelVisibleProgress(); myUpdateProgress = null; } @@ -626,4 +626,8 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzer implements JDOMEx return UpdateHighlightersUtil.getFileLeveleHighlights(project, file); } + @TestOnly + public void clearPasses() { + myPassExecutorService.cancelAll(true); + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java index f51eb7287c5b..7a4390553b18 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java @@ -285,7 +285,8 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP HighlightInfo patched = new HighlightInfo(info.forcedTextAttributes, info.type, hostRange.getStartOffset(), hostRange.getEndOffset(), info.description, info.toolTip, info.type.getSeverity(null), info.isAfterEndOfLine, null, false); - + patched.setHint(info.hasHint()); + if (info.quickFixActionRanges != null) { for (Pair pair : info.quickFixActionRanges) { TextRange quickfixTextRange = pair.getSecond(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java index f3d4a3b4983f..525c97024724 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/PassExecutorService.java @@ -61,7 +61,7 @@ public abstract class PassExecutorService implements Disposable { private final Map> mySubmittedPasses = new ConcurrentHashMap>(); private final Project myProject; - private boolean isDisposed; + private volatile boolean isDisposed; private final AtomicInteger nextPassId = new AtomicInteger(100); public PassExecutorService(Project project) { @@ -70,28 +70,29 @@ public abstract class PassExecutorService implements Disposable { } public void dispose() { - for (Job submittedPass : mySubmittedPasses.values()) { - submittedPass.cancel(); - } - for (Job job : mySubmittedPasses.values()) { - try { - if (!job.isDone()) ((JobImpl)job).waitForTermination(); - } - catch (Throwable throwable) { - LOG.error(throwable); - } - } + cancelAll(true); isDisposed = true; } - public void cancelAll() { + public void cancelAll(boolean waitForTermination) { for (Job submittedPass : mySubmittedPasses.values()) { submittedPass.cancel(); } + if (waitForTermination) { + for (Job job : mySubmittedPasses.values()) { + try { + if (!job.isDone()) ((JobImpl)job).waitForTermination(); + } + catch (Throwable throwable) { + LOG.error(throwable); + } + } + } mySubmittedPasses.clear(); } public void submitPasses(Map passesMap, DaemonProgressIndicator updateProgress, final int jobPriority) { + if (isDisposed()) return; int id = 1; // (doc, passId) -> created pass diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index 7b8f741286c4..3b1b009e3d80 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -39,6 +39,7 @@ import com.intellij.openapi.actionSystem.ex.AnActionListener; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; @@ -437,7 +438,10 @@ public class DocumentationManager { //noinspection SSBasedInspection SwingUtilities.invokeLater(new Runnable() { public void run() { - component.setText(CodeInsightBundle.message("javadoc.external.fetch.error.message", ex[0].getLocalizedMessage()), true); + String message = ex[0] instanceof IndexNotReadyException + ? "Documentation is not available until indices are built." + : CodeInsightBundle.message("javadoc.external.fetch.error.message", ex[0].getLocalizedMessage()); + component.setText(message, true); callback.setDone(); } }); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CollapseSelectionHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CollapseSelectionHandler.java index 4f6a575093da..fcf6e1cf7361 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CollapseSelectionHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/CollapseSelectionHandler.java @@ -27,11 +27,7 @@ import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; /** - * Created by IntelliJ IDEA. - * User: ven - * Date: Apr 10, 2003 - * Time: 8:52:53 PM - * To change this template use Options | File Templates. + * @author ven */ public class CollapseSelectionHandler implements CodeInsightActionHandler { private static final String ourPlaceHolderText = "..."; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/actions/CollapseSelectionAction.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/actions/CollapseSelectionAction.java index 056a160ea5c5..66d877fdea6d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/actions/CollapseSelectionAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/actions/CollapseSelectionAction.java @@ -16,17 +16,13 @@ package com.intellij.codeInsight.folding.impl.actions; -import com.intellij.codeInsight.actions.BaseCodeInsightAction; import com.intellij.codeInsight.CodeInsightActionHandler; +import com.intellij.codeInsight.actions.BaseCodeInsightAction; import com.intellij.codeInsight.folding.impl.CollapseSelectionHandler; import com.intellij.openapi.project.DumbAware; /** - * Created by IntelliJ IDEA. - * User: ven - * Date: Apr 10, 2003 - * Time: 9:59:35 PM - * To change this template use Options | File Templates. + * @author ven */ public class CollapseSelectionAction extends BaseCodeInsightAction implements DumbAware { protected CodeInsightActionHandler getHandler() { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/actions/HighlightUsagesAction.java b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/actions/HighlightUsagesAction.java index ceddf431a73c..9c775e3c0bf0 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/actions/HighlightUsagesAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/actions/HighlightUsagesAction.java @@ -21,9 +21,9 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.DumbAware; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.DumbService; +import com.intellij.openapi.project.IndexNotReadyException; +import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; @@ -37,8 +37,8 @@ public class HighlightUsagesAction extends AnAction implements DumbAware { final Presentation presentation = event.getPresentation(); final DataContext dataContext = event.getDataContext(); - presentation.setEnabled(dataContext.getData(DataConstants.PROJECT) != null && - dataContext.getData(DataConstants.EDITOR) != null); + presentation.setEnabled(PlatformDataKeys.PROJECT.getData(dataContext) != null && + PlatformDataKeys.EDITOR.getData(dataContext) != null); } public void actionPerformed(AnActionEvent e) { @@ -65,4 +65,4 @@ public class HighlightUsagesAction extends AnAction implements DumbAware { null ); } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java index a17dad573c69..9db9a3fca2b7 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java @@ -21,6 +21,7 @@ import com.intellij.codeInsight.daemon.impl.ShowIntentionsPass; import com.intellij.codeInsight.hint.HintManager; import com.intellij.codeInsight.intention.EmptyIntentionAction; import com.intellij.codeInsight.intention.IntentionAction; +import com.intellij.codeInsight.intention.PreferredAction; import com.intellij.codeInsight.intention.impl.config.IntentionManagerSettings; import com.intellij.codeInspection.ex.QuickFixWrapper; import com.intellij.openapi.application.ApplicationManager; @@ -213,12 +214,8 @@ class IntentionListStep implements ListPopupStep result.addAll(myCachedGutters); Collections.sort(result, new Comparator() { public int compare(final IntentionActionWithTextCaching o1, final IntentionActionWithTextCaching o2) { - final IntentionAction action1 = o1.getAction(); - final IntentionAction action2 = o2.getAction(); - if (action1 instanceof EmptyIntentionAction && !(action2 instanceof EmptyIntentionAction)) return 1; - if (action2 instanceof EmptyIntentionAction && !(action1 instanceof EmptyIntentionAction)) return -1; - int weight1 = myCachedErrorFixes.contains(o1) ? 2 : myCachedInspectionFixes.contains(o1) ? 1 : 0; - int weight2 = myCachedErrorFixes.contains(o2) ? 2 : myCachedInspectionFixes.contains(o2) ? 1 : 0; + int weight1 = getWeight(o1); + int weight2 = getWeight(o2); if (weight1 != weight2) { return weight2 - weight1; } @@ -228,6 +225,24 @@ class IntentionListStep implements ListPopupStep return result; } + private int getWeight(IntentionActionWithTextCaching action) { + if (action.getAction() instanceof PreferredAction) { + return 3; + } + else if (myCachedErrorFixes.contains(action)) { + return 2; + } + else if (myCachedInspectionFixes.contains(action)) { + return 1; + } + else if (action.getAction() instanceof EmptyIntentionAction) { + return -1; + } + else { + return 0; + } + } + @NotNull public String getTextFor(final IntentionActionWithTextCaching action) { return action.getAction().getText(); @@ -272,10 +287,7 @@ class IntentionListStep implements ListPopupStep if (index == 0) return null; IntentionActionWithTextCaching prev = values.get(index - 1); - if (myCachedErrorFixes.contains(value) != myCachedErrorFixes.contains(prev) - || myCachedInspectionFixes.contains(value) != myCachedInspectionFixes.contains(prev) - || myCachedIntentions.contains(value) != myCachedIntentions.contains(prev) - || value.getAction() instanceof EmptyIntentionAction != prev.getAction() instanceof EmptyIntentionAction) { + if (getWeight(value) != getWeight(prev)) { return new ListSeparator(); } return null; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/DeferredUserLookupValue.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/DeferredUserLookupValue.java index 2c9d2ab01ad6..f2a4f3c5dd5e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/DeferredUserLookupValue.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/DeferredUserLookupValue.java @@ -19,13 +19,9 @@ package com.intellij.codeInsight.lookup; import com.intellij.openapi.project.Project; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Sep 29, 2004 - * Time: 7:38:32 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko * @deprecated use InsertHandler */ public interface DeferredUserLookupValue extends PresentableLookupValue { - boolean handleUserSelection(LookupItem item,Project project); + boolean handleUserSelection(LookupItem item, Project project); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithPriority.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithPriority.java index e28fe445fb07..ab5b1b80d326 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithPriority.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithPriority.java @@ -17,16 +17,12 @@ package com.intellij.codeInsight.lookup; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Jun 20, 2005 - * Time: 8:12:52 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public interface LookupValueWithPriority { int NORMAL = 0; int HIGHER = 1; int HIGH = 2; - + int getPriority(); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithPsiElement.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithPsiElement.java index 325a9e807367..62f892cc5843 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithPsiElement.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithPsiElement.java @@ -19,11 +19,7 @@ package com.intellij.codeInsight.lookup; import com.intellij.psi.PsiElement; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Jun 20, 2005 - * Time: 8:12:52 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public interface LookupValueWithPsiElement { PsiElement getElement(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithUIHint.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithUIHint.java index 41099f43d338..883067a81c4b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithUIHint.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupValueWithUIHint.java @@ -19,15 +19,13 @@ package com.intellij.codeInsight.lookup; import java.awt.*; /** - * Created by IntelliJ IDEA. - * User: maxim - * Date: 10.12.2004 - * Time: 13:25:56 - * To change this template use File | Settings | File Templates. + * @author maxim * @deprecated use InsertHandler */ public interface LookupValueWithUIHint extends PresentableLookupValue { String getTypeHint(); + Color getColorHint(); + boolean isBold(); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/PresentableLookupValue.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/PresentableLookupValue.java index b19d5279876a..ccb253b00c0f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/PresentableLookupValue.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/PresentableLookupValue.java @@ -17,13 +17,9 @@ package com.intellij.codeInsight.lookup; /** - * Created by IntelliJ IDEA. - * User: maxim - * Date: 10.12.2004 - * Time: 13:38:25 - * To change this template use File | Settings | File Templates. + * @author maxim * @deprecated use LookupElementBuilder */ public interface PresentableLookupValue { - String getPresentation(); + String getPresentation(); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/quickfix/UnresolvedReferenceQuickFixProvider.java b/platform/lang-impl/src/com/intellij/codeInsight/quickfix/UnresolvedReferenceQuickFixProvider.java new file mode 100644 index 000000000000..e177857f4077 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/codeInsight/quickfix/UnresolvedReferenceQuickFixProvider.java @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2009 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInsight.quickfix; + +import com.intellij.codeInsight.daemon.QuickFixActionRegistrar; +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.DumbService; +import com.intellij.psi.PsiReference; +import com.intellij.util.ReflectionCache; +import org.jetbrains.annotations.NotNull; + +public abstract class UnresolvedReferenceQuickFixProvider { + + public static void registerReferenceFixes(T ref, QuickFixActionRegistrar registrar) { + + final boolean dumb = DumbService.getInstance(ref.getElement().getProject()).isDumb(); + UnresolvedReferenceQuickFixProvider[] fixProviders = Extensions.getExtensions(EXTENSION_NAME); + Class referenceClass = ref.getClass(); + for (UnresolvedReferenceQuickFixProvider each : fixProviders) { + if (dumb && !(each instanceof DumbAware)) { + continue; + } + if (ReflectionCache.isAssignable(each.getReferenceClass(), referenceClass)) { + each.registerFixes(ref, registrar); + } + } + } + + private static final ExtensionPointName EXTENSION_NAME = + ExtensionPointName.create("com.intellij.codeInsight.unresolvedReferenceQuickFixProvider"); + + public abstract void registerFixes(T ref, QuickFixActionRegistrar registrar); + + @NotNull + public abstract Class getReferenceClass(); +} diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/FileTypeBasedContextType.java b/platform/lang-impl/src/com/intellij/codeInsight/template/FileTypeBasedContextType.java index 523257895803..d88aea4facb0 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/FileTypeBasedContextType.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/FileTypeBasedContextType.java @@ -20,15 +20,11 @@ import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.psi.PsiFile; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; /** - * Created by IntelliJ IDEA. - * User: lesya - * Date: Jul 28, 2008 - * Time: 4:53:26 PM - * To change this template use File | Settings | File Templates. + * @author lesya */ public abstract class FileTypeBasedContextType extends TemplateContextType { private final LanguageFileType myFileType; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateImplUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateImplUtil.java index 34114bfb0d60..d4261d2855ac 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateImplUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateImplUtil.java @@ -24,13 +24,12 @@ import java.util.ArrayList; import java.util.Set; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Mar 19, 2004 - * Time: 1:28:54 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class TemplateImplUtil { + private TemplateImplUtil() { + } + public static boolean validateTemplateText(String s) { TemplateTextLexer lexer = new TemplateTextLexer(); lexer.start(s); diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java index 5cc7598cf2f7..6ffed4812658 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/QuickFixAction.java @@ -29,7 +29,6 @@ import com.intellij.codeInspection.ui.InspectionTree; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CustomShortcutSet; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.project.Project; @@ -54,7 +53,7 @@ public class QuickFixAction extends AnAction { protected InspectionTool myTool; public static InspectionResultsView getInvoker(AnActionEvent e) { - return (InspectionResultsView)e.getDataContext().getData(DataConstantsEx.INSPECTION_VIEW); + return InspectionResultsView.DATA_KEY.getData(e.getDataContext()); } protected QuickFixAction(String text, InspectionTool tool) { diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java index 4c78d9fee44c..5980a99f166a 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java @@ -17,7 +17,6 @@ package com.intellij.codeInspection.ui; import com.intellij.CommonBundle; -import com.intellij.injected.editor.VirtualFileWindow; import com.intellij.analysis.AnalysisScope; import com.intellij.analysis.AnalysisUIOptions; import com.intellij.codeHighlighting.HighlightDisplayLevel; @@ -31,9 +30,9 @@ import com.intellij.codeInspection.ui.actions.ExportHTMLAction; import com.intellij.codeInspection.ui.actions.InspectionsOptionsToolbarAction; import com.intellij.codeInspection.ui.actions.InvokeQuickFixAction; import com.intellij.ide.*; +import com.intellij.injected.editor.VirtualFileWindow; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.colors.EditorColors; @@ -80,6 +79,8 @@ import java.util.List; * @author max */ public class InspectionResultsView extends JPanel implements Disposable, OccurenceNavigator, DataProvider { + public static final DataKey DATA_KEY = DataKey.create("inspectionView"); + private final Project myProject; private InspectionTree myTree; private final Browser myBrowser; @@ -566,15 +567,15 @@ public class InspectionResultsView extends JPanel implements Disposable, Occuren } public Object getData(String dataId) { - if (dataId.equals(DataConstants.HELP_ID)) return HELP_ID; - if (dataId.equals(DataConstantsEx.INSPECTION_VIEW)) return this; + if (PlatformDataKeys.HELP_ID.is(dataId)) return HELP_ID; + if (InspectionResultsView.DATA_KEY.is(dataId)) return this; if (myTree == null) return null; TreePath[] paths = myTree.getSelectionPaths(); if (paths == null) return null; if (paths.length > 1) { - if (DataConstants.PSI_ELEMENT_ARRAY.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { return collectPsiElements(); } else { @@ -608,14 +609,14 @@ public class InspectionResultsView extends JPanel implements Disposable, Occuren } } - if (DataConstants.NAVIGATABLE.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { return getSelectedNavigatable(problem, psiElement); } - else if (DataConstants.PSI_ELEMENT.equals(dataId)) { + else if (LangDataKeys.PSI_ELEMENT.is(dataId)) { return psiElement.isValid() ? psiElement : null; } } - else if (selectedNode instanceof ProblemDescriptionNode && DataConstants.NAVIGATABLE.equals(dataId)) { + else if (selectedNode instanceof ProblemDescriptionNode && PlatformDataKeys.NAVIGATABLE.is(dataId)) { return getSelectedNavigatable(((ProblemDescriptionNode)selectedNode).getDescriptor()); } diff --git a/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConsoleBase.java b/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConsoleBase.java index 88cca8865674..aaa609a2f7b8 100644 --- a/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConsoleBase.java +++ b/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConsoleBase.java @@ -48,11 +48,7 @@ import java.io.*; import java.util.List; /** - * Created by IntelliJ IDEA. - * User: Eugene.Kudelevsky - * Date: Sep 11, 2009 - * Time: 9:26:11 PM - * To change this template use File | Settings | File Templates. + * @author Eugene.Kudelevsky */ public abstract class LogConsoleBase extends AdditionalTabComponent implements LogConsole, LogFilterListener { private static final Logger LOG = Logger.getInstance("com.intellij.diagnostic.logging.LogConsoleImpl"); @@ -340,7 +336,7 @@ public abstract class LogConsoleBase extends AdditionalTabComponent implements L @Nullable private Editor getEditor() { - return myConsole != null ? (Editor)((DataProvider)myConsole).getData(DataConstants.EDITOR) : null; + return myConsole != null ? PlatformDataKeys.EDITOR.getData((DataProvider) myConsole) : null; } private synchronized void filterConsoleOutput(Condition isApplicable) { diff --git a/platform/lang-impl/src/com/intellij/execution/actions/ConfigurationContext.java b/platform/lang-impl/src/com/intellij/execution/actions/ConfigurationContext.java index 5cc0e0137d47..cf7c494deac1 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/ConfigurationContext.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/ConfigurationContext.java @@ -22,11 +22,9 @@ import com.intellij.execution.configurations.RuntimeConfiguration; import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl; import com.intellij.execution.junit.RuntimeConfigurationProducer; import com.intellij.ide.DataManager; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.module.Module; @@ -53,12 +51,13 @@ public class ConfigurationContext { private final Component myContextComponent; public ConfigurationContext(final DataContext dataContext) { - myRuntimeConfiguration = (RuntimeConfiguration)dataContext.getData(DataConstantsEx.RUNTIME_CONFIGURATION); - myContextComponent = (Component)dataContext.getData(DataConstants.CONTEXT_COMPONENT); + myRuntimeConfiguration = RuntimeConfiguration.DATA_KEY.getData(dataContext); + myContextComponent = PlatformDataKeys.CONTEXT_COMPONENT.getData(dataContext); myModule = LangDataKeys.MODULE.getData(dataContext); - final Object location = dataContext.getData(Location.LOCATION); + @SuppressWarnings({"unchecked"}) + final Location location = (Location)Location.DATA_KEY.getData(dataContext); if (location != null) { - myLocation = (Location)location; + myLocation = location; return; } final Project project = PlatformDataKeys.PROJECT.getData(dataContext); diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java b/platform/lang-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java index c433a70df571..290eacfa1518 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java @@ -88,9 +88,15 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor CONSOLE = new DataAccessor() { - public ConsoleViewImpl getImpl(final DataContext dataContext) throws NoDataException { - return DataAccessors.EDITOR.getNotNull(dataContext).getUserData(CONSOLE_VIEW_IN_EDITOR_VIEW); - } - }; - - private static final Condition CONSOLE_IS_RUNNING = new Condition() { - public boolean value(final ConsoleViewImpl consoleView) { - return consoleView.myState.isRunning(); - } - }; - - private static final DataAccessor RUNNINT_CONSOLE =DataAccessor.createConditionalAccessor(CONSOLE, CONSOLE_IS_RUNNING); - private abstract static class ConsoleAction extends AnAction implements DumbAware { public void actionPerformed(final AnActionEvent e) { final DataContext context = e.getDataContext(); - final ConsoleViewImpl console = RUNNINT_CONSOLE.from(context); + final ConsoleViewImpl console = getRunningConsole(context); execute(console, context); } protected abstract void execute(ConsoleViewImpl console, final DataContext context); public void update(final AnActionEvent e) { - final ConsoleViewImpl console = RUNNINT_CONSOLE.from(e.getDataContext()); + final ConsoleViewImpl console = getRunningConsole(e.getDataContext()); e.getPresentation().setEnabled(console != null); } + + @Nullable + private static ConsoleViewImpl getRunningConsole(final DataContext context) { + final Editor editor = PlatformDataKeys.EDITOR.getData(context); + if (editor != null) { + final ConsoleViewImpl console = editor.getUserData(CONSOLE_VIEW_IN_EDITOR_VIEW); + if (console != null && console.myState.isRunning()) { + return console; + } + } + return null; + } } private static class EnterHandler extends ConsoleAction { diff --git a/platform/lang-impl/src/com/intellij/execution/runners/RestartAction.java b/platform/lang-impl/src/com/intellij/execution/runners/RestartAction.java index 040aa845623a..134513e65ff2 100644 --- a/platform/lang-impl/src/com/intellij/execution/runners/RestartAction.java +++ b/platform/lang-impl/src/com/intellij/execution/runners/RestartAction.java @@ -62,12 +62,12 @@ public class RestartAction extends AnAction implements DumbAware { final ExecutionEnvironment old = myEnvironment; myRunner.execute(myExecutor, new ExecutionEnvironment(old.getRunProfile(), old.getRunnerSettings(), old.getConfigurationSettings(), new DataContext() { public Object getData(final String dataId) { - if (GenericProgramRunner.CONTENT_TO_REUSE.equals(dataId)) return myDescriptor; + if (GenericProgramRunner.CONTENT_TO_REUSE_DATA_KEY.is(dataId)) return myDescriptor; return dataContext.getData(dataId); } })); } - catch (RunCanceledByUserException e1) { + catch (RunCanceledByUserException ignore) { } catch (ExecutionException e1) { Messages.showErrorDialog(project, e1.getMessage(), ExecutionBundle.message("restart.error.message.title")); diff --git a/platform/lang-impl/src/com/intellij/execution/ui/RunContentManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/ui/RunContentManagerImpl.java index 0d98f59dd3d3..eafb3e3485d5 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/RunContentManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/RunContentManagerImpl.java @@ -15,7 +15,10 @@ */ package com.intellij.execution.ui; -import com.intellij.execution.*; +import com.intellij.execution.ExecutionBundle; +import com.intellij.execution.Executor; +import com.intellij.execution.ExecutorRegistry; +import com.intellij.execution.TerminateRemoteProcessDialog; import com.intellij.execution.process.ProcessAdapter; import com.intellij.execution.process.ProcessEvent; import com.intellij.execution.process.ProcessHandler; @@ -23,9 +26,9 @@ import com.intellij.execution.runners.GenericProgramRunner; import com.intellij.ide.DataManager; import com.intellij.ide.impl.ContentManagerWatcher; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.impl.LaterInvocator; import com.intellij.openapi.diagnostic.Logger; @@ -45,7 +48,6 @@ import com.intellij.openapi.wm.ex.ToolWindowManagerAdapter; import com.intellij.openapi.wm.ex.ToolWindowManagerEx; import com.intellij.ui.content.*; import com.intellij.util.EventDispatcher; -import com.intellij.util.IconUtil; import com.intellij.util.concurrency.Semaphore; import com.intellij.util.containers.HashMap; import org.jetbrains.annotations.NotNull; @@ -132,7 +134,7 @@ public class RunContentManagerImpl implements RunContentManager, Disposable { public Object getData(String dataId) { myInsideGetData ++; try { - if(DataConstants.HELP_ID.equals(dataId)) { + if(PlatformDataKeys.HELP_ID.is(dataId)) { return executor.getHelpId(); } else { @@ -182,10 +184,8 @@ public class RunContentManagerImpl implements RunContentManager, Disposable { if (contentManager != null && content != null) { contentManager.setSelectedContent(content); - if (content != null) { - final ToolWindow toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(requestor.getToolWindowId()); - toolWindow.show(null); - } + final ToolWindow toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(requestor.getToolWindowId()); + toolWindow.show(null); } } }); @@ -312,7 +312,7 @@ public class RunContentManagerImpl implements RunContentManager, Disposable { @Nullable public RunContentDescriptor getReuseContent(final Executor requestor, DataContext dataContext) { if(ApplicationManager.getApplication().isUnitTestMode()) return null; - RunContentDescriptor runContentDescriptor = (RunContentDescriptor)dataContext.getData(GenericProgramRunner.CONTENT_TO_REUSE); + RunContentDescriptor runContentDescriptor = GenericProgramRunner.CONTENT_TO_REUSE_DATA_KEY.getData(dataContext); if(runContentDescriptor != null) return runContentDescriptor; @@ -594,7 +594,7 @@ public class RunContentManagerImpl implements RunContentManager, Disposable { wait(2000); } } - catch (InterruptedException e) { + catch (InterruptedException ignore) { } } } diff --git a/platform/lang-impl/src/com/intellij/find/EditorSearchComponent.java b/platform/lang-impl/src/com/intellij/find/EditorSearchComponent.java index 61f52f2ea074..d8c9f6a532b2 100644 --- a/platform/lang-impl/src/com/intellij/find/EditorSearchComponent.java +++ b/platform/lang-impl/src/com/intellij/find/EditorSearchComponent.java @@ -26,7 +26,6 @@ import com.intellij.find.impl.FindManagerImpl; import com.intellij.ide.ui.LafManager; import com.intellij.ide.ui.UISettings; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.editor.SelectionModel; @@ -88,7 +87,7 @@ public class EditorSearchComponent extends JPanel implements DataProvider { @Nullable public Object getData(@NonNls final String dataId) { - if (DataConstants.EDITOR_EVEN_IF_INACTIVE.equals(dataId)) { + if (PlatformDataKeys.EDITOR_EVEN_IF_INACTIVE.is(dataId)) { return myEditor; } return null; @@ -286,19 +285,11 @@ public class EditorSearchComponent extends JPanel implements DataProvider { }); new VariantsCompletionAction(); // It registers a shortcut set automatically on construction - - myDocumentListener = new com.intellij.openapi.editor.event.DocumentAdapter() { - public void documentChanged(final com.intellij.openapi.editor.event.DocumentEvent e) { - updateResults(false); - } - }; - - myEditor.getDocument().addDocumentListener(myDocumentListener); } public void setInitialText(final String initialText) { final String text = initialText != null ? initialText : ""; - if (text.indexOf("\n") >= 0) { + if (text.contains("\n")) { setRegexp(true); setTextInField(StringUtil.escapeToRegexp(text)); } @@ -375,6 +366,19 @@ public class EditorSearchComponent extends JPanel implements DataProvider { addCurrentTextToRecents(); } + @Override + public void addNotify() { + super.addNotify(); + + myDocumentListener = new com.intellij.openapi.editor.event.DocumentAdapter() { + public void documentChanged(final com.intellij.openapi.editor.event.DocumentEvent e) { + updateResults(false); + } + }; + + myEditor.getDocument().addDocumentListener(myDocumentListener); + } + public void removeNotify() { super.removeNotify(); @@ -454,7 +458,7 @@ public class EditorSearchComponent extends JPanel implements DataProvider { if (count > 0) { setRegularBackground(); if (count > 1) { - myMatchInfoLabel.setText("" + count + " matches"); + myMatchInfoLabel.setText(count + " matches"); } else { myMatchInfoLabel.setText("1 match"); @@ -530,8 +534,7 @@ public class EditorSearchComponent extends JPanel implements DataProvider { } private boolean findAndSelectFirstUsage(final FindManager findManager, final FindModel model, final int offset, VirtualFile file) { - final FindResult firstResult; - firstResult = findManager.findString(myEditor.getDocument().getCharsSequence(), offset, model, file); + final FindResult firstResult = findManager.findString(myEditor.getDocument().getCharsSequence(), offset, model, file); if (firstResult.isStringFound()) { myEditor.getSelectionModel().setSelection(firstResult.getStartOffset(), firstResult.getEndOffset()); diff --git a/platform/lang-impl/src/com/intellij/find/FindBundle.java b/platform/lang-impl/src/com/intellij/find/FindBundle.java index 3d3a2ecf03a2..ea7e68cc8472 100644 --- a/platform/lang-impl/src/com/intellij/find/FindBundle.java +++ b/platform/lang-impl/src/com/intellij/find/FindBundle.java @@ -25,11 +25,7 @@ import java.lang.ref.SoftReference; import java.util.ResourceBundle; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 31.08.2005 - * Time: 13:20:15 - * To change this template use File | Settings | File Templates. + * @author yole */ public class FindBundle { private static Reference ourBundle; diff --git a/platform/lang-impl/src/com/intellij/find/actions/FindUsagesInFileAction.java b/platform/lang-impl/src/com/intellij/find/actions/FindUsagesInFileAction.java index 21b599f96fbd..18e0a0c3071d 100644 --- a/platform/lang-impl/src/com/intellij/find/actions/FindUsagesInFileAction.java +++ b/platform/lang-impl/src/com/intellij/find/actions/FindUsagesInFileAction.java @@ -44,7 +44,7 @@ public class FindUsagesInFileAction extends AnAction { PsiDocumentManager.getInstance(project).commitAllDocuments(); Editor editor = PlatformDataKeys.EDITOR.getData(dataContext); - UsageTarget[] usageTargets = (UsageTarget[])dataContext.getData(UsageView.USAGE_TARGETS); + UsageTarget[] usageTargets = UsageView.USAGE_TARGETS_KEY.getData(dataContext); if (usageTargets != null) { FileEditor fileEditor = PlatformDataKeys.FILE_EDITOR.getData(dataContext); if (fileEditor != null) { @@ -76,7 +76,7 @@ public class FindUsagesInFileAction extends AnAction { Editor editor = PlatformDataKeys.EDITOR.getData(dataContext); if (editor == null) { - UsageTarget[] target = (UsageTarget[])dataContext.getData(UsageView.USAGE_TARGETS); + UsageTarget[] target = UsageView.USAGE_TARGETS_KEY.getData(dataContext); return target != null && target.length > 0; } else { diff --git a/platform/lang-impl/src/com/intellij/find/findUsages/CommonFindUsagesDialog.java b/platform/lang-impl/src/com/intellij/find/findUsages/CommonFindUsagesDialog.java index bf96889a8275..f0346d309ea0 100644 --- a/platform/lang-impl/src/com/intellij/find/findUsages/CommonFindUsagesDialog.java +++ b/platform/lang-impl/src/com/intellij/find/findUsages/CommonFindUsagesDialog.java @@ -16,9 +16,9 @@ package com.intellij.find.findUsages; +import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.help.HelpManager; import com.intellij.psi.PsiElement; import com.intellij.psi.search.LocalSearchScope; import com.intellij.usageView.UsageViewUtil; @@ -26,11 +26,7 @@ import com.intellij.usageView.UsageViewUtil; import javax.swing.*; /** - * Created by IntelliJ IDEA. - * User: max - * Date: Feb 14, 2005 - * Time: 5:40:05 PM - * To change this template use File | Settings | File Templates. + * @author max */ public class CommonFindUsagesDialog extends AbstractFindUsagesDialog { private final PsiElement myPsiElement; diff --git a/platform/lang-impl/src/com/intellij/formatting/AbstractBlockWrapper.java b/platform/lang-impl/src/com/intellij/formatting/AbstractBlockWrapper.java index 87003242f15f..ee3a329a2295 100644 --- a/platform/lang-impl/src/com/intellij/formatting/AbstractBlockWrapper.java +++ b/platform/lang-impl/src/com/intellij/formatting/AbstractBlockWrapper.java @@ -22,11 +22,7 @@ import com.intellij.psi.codeStyle.CodeStyleSettings; import java.util.ArrayList; /** - * Created by IntelliJ IDEA. - * User: lesya - * Date: Apr 14, 2005 - * Time: 9:40:01 PM - * To change this template use File | Settings | File Templates. + * @author lesya */ public abstract class AbstractBlockWrapper { protected WhiteSpace myWhiteSpace; diff --git a/platform/lang-impl/src/com/intellij/ide/CopyPasteDelegator.java b/platform/lang-impl/src/com/intellij/ide/CopyPasteDelegator.java index ce61ecc3ac31..cfd449c6a4b9 100644 --- a/platform/lang-impl/src/com/intellij/ide/CopyPasteDelegator.java +++ b/platform/lang-impl/src/com/intellij/ide/CopyPasteDelegator.java @@ -17,8 +17,8 @@ package com.intellij.ide; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; @@ -128,7 +128,7 @@ public abstract class CopyPasteDelegator implements CopyPasteSupport { final PsiElement[] elements = PsiCopyPasteManager.getInstance().getElements(isCopied); if (elements == null) return false; try { - PsiElement target = (PsiElement)dataContext.getData(DataConstantsEx.PASTE_TARGET_PSI_ELEMENT); + PsiElement target = LangDataKeys.PASTE_TARGET_PSI_ELEMENT.getData(dataContext); if (isCopied[0]) { PsiDirectory targetDirectory = target instanceof PsiDirectory ? (PsiDirectory)target : null; if (targetDirectory == null && target instanceof PsiDirectoryContainer) { @@ -180,7 +180,7 @@ public abstract class CopyPasteDelegator implements CopyPasteSupport { return false; } - Object target = dataContext.getData(DataConstantsEx.PASTE_TARGET_PSI_ELEMENT); + Object target = LangDataKeys.PASTE_TARGET_PSI_ELEMENT.getData(dataContext); if (target == null) { return false; } @@ -200,4 +200,4 @@ public abstract class CopyPasteDelegator implements CopyPasteSupport { return true; } } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/ide/DataAccessors.java b/platform/lang-impl/src/com/intellij/ide/DataAccessors.java deleted file mode 100644 index 5ab2b63001de..000000000000 --- a/platform/lang-impl/src/com/intellij/ide/DataAccessors.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.intellij.ide; - -import com.intellij.openapi.actionSystem.DataConstants; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.fileEditor.FileEditorManager; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ex.ProjectEx; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; - -/** - * @author yole - */ -public class DataAccessors { - public static final DataAccessor PROJECT = new DataAccessor.SimpleDataAccessor(DataConstants.PROJECT); - public static final DataAccessor MODULE = new DataAccessor.SimpleDataAccessor(DataConstants.MODULE); - public static final DataAccessor EDITOR = new DataAccessor.SimpleDataAccessor(DataConstants.EDITOR); - public static final DataAccessor PSI_MANAGER = new DataAccessor() { - public PsiManager getImpl(DataContext dataContext) throws NoDataException { - return PsiManager.getInstance(PROJECT.getNotNull(dataContext)); - } - }; - public static final DataAccessor FILE_EDITOR_MANAGER = new DataAccessor() { - public FileEditorManager getImpl(DataContext dataContext) throws NoDataException { - return FileEditorManager.getInstance(PROJECT.getNotNull(dataContext)); - } - }; - public static final DataAccessor PSI_FILE = new DataAccessor() { - public PsiFile getImpl(DataContext dataContext) throws NoDataException { - return PSI_MANAGER.getNotNull(dataContext).findFile(VIRTUAL_FILE.getNotNull(dataContext)); - } - }; - public static final DataAccessor PSI_ELEMENT = new DataAccessor.SimpleDataAccessor(DataConstants.PSI_ELEMENT); - public static final DataAccessor PSI_ELEMENT_ARRAY = new DataAccessor.SimpleDataAccessor(DataConstants.PSI_ELEMENT_ARRAY); - public static final DataAccessor VIRTUAL_FILE = new DataAccessor.SimpleDataAccessor(DataConstants.VIRTUAL_FILE); - public static final DataAccessor VIRTUAL_FILE_ARRAY = new DataAccessor.SimpleDataAccessor(DataConstants.VIRTUAL_FILE_ARRAY); - public static final DataAccessor VIRTUAL_DIR_OR_PARENT = new DataAccessor() { - public VirtualFile getImpl(DataContext dataContext) throws NoDataException { - VirtualFile virtualFile = VIRTUAL_FILE.getNotNull(dataContext); - return virtualFile.isDirectory() ? virtualFile : virtualFile.getParent(); - } - }; - /** - * @deprecated - */ - public static final DataAccessor PROJECT_FILE_PATH = new DataAccessor() { - public String getImpl(DataContext dataContext) throws NoDataException { - Project project = PROJECT.getNotNull(dataContext); - return project.getProjectFilePath(); - } - }; - public static final DataAccessor PROJECT_BASE_DIR = new DataAccessor() { - public VirtualFile getImpl(DataContext dataContext) throws NoDataException { - Project project = PROJECT.getNotNull(dataContext); - return project.getBaseDir(); - } - }; - public static final DataAccessor MODULE_FILE_PATH = new DataAccessor() { - public String getImpl(DataContext dataContext) throws NoDataException { - Module module = MODULE.getNotNull(dataContext); - return module.getModuleFilePath(); - } - }; - public static final DataAccessor PROJECT_EX = new DataAccessor.SubClassDataAccessor(PROJECT, ProjectEx.class); -} \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/actions/CopyElementAction.java b/platform/lang-impl/src/com/intellij/ide/actions/CopyElementAction.java index c784b92e0ea2..15031051deb2 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/CopyElementAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/CopyElementAction.java @@ -17,7 +17,6 @@ package com.intellij.ide.actions; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; @@ -32,6 +31,9 @@ public class CopyElementAction extends AnAction { public void actionPerformed(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); final Project project = PlatformDataKeys.PROJECT.getData(dataContext); + if (project == null) { + return; + } CommandProcessor.getInstance().executeCommand(project, new Runnable() { public void run() { @@ -41,7 +43,7 @@ public class CopyElementAction extends AnAction { final Editor editor = PlatformDataKeys.EDITOR.getData(dataContext); PsiElement[] elements; - PsiDirectory defaultTargetDirectory = null; + PsiDirectory defaultTargetDirectory; if (editor != null) { PsiElement aElement = getTargetElement(editor, project); PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); @@ -52,7 +54,7 @@ public class CopyElementAction extends AnAction { } defaultTargetDirectory = file.getContainingDirectory(); } else { - Object element = dataContext.getData(DataConstantsEx.TARGET_PSI_ELEMENT); + PsiElement element = LangDataKeys.TARGET_PSI_ELEMENT.getData(dataContext); defaultTargetDirectory = element instanceof PsiDirectory ? (PsiDirectory)element : null; elements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext); } @@ -90,6 +92,10 @@ public class CopyElementAction extends AnAction { } Project project = PlatformDataKeys.PROJECT.getData(dataContext); + if (project == null) { + return; + + } PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); PsiElement element = getTargetElement(editor, project); diff --git a/platform/lang-impl/src/com/intellij/ide/actions/QuickChangeCodeStyleSchemeAction.java b/platform/lang-impl/src/com/intellij/ide/actions/QuickChangeCodeStyleSchemeAction.java index f7d76fe8b777..72fd2900a2e4 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/QuickChangeCodeStyleSchemeAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/QuickChangeCodeStyleSchemeAction.java @@ -64,8 +64,11 @@ public class QuickChangeCodeStyleSchemeAction extends QuickSwitchSchemeAction { } } - private void addScheme(final DefaultActionGroup group, final CodeStyleSettingsManager manager, final CodeStyleScheme currentScheme, - final CodeStyleScheme scheme, final boolean addScheme) { + private static void addScheme(final DefaultActionGroup group, + final CodeStyleSettingsManager manager, + final CodeStyleScheme currentScheme, + final CodeStyleScheme scheme, + final boolean addScheme) { group.add(new AnAction(scheme.getName(), "", scheme == currentScheme && !manager.USE_PER_PROJECT_SETTINGS ? ourCurrentAction : ourNotCurrentAction) { public void actionPerformed(AnActionEvent e) { @@ -85,6 +88,6 @@ public class QuickChangeCodeStyleSchemeAction extends QuickSwitchSchemeAction { public void update(AnActionEvent e) { super.update(e); - e.getPresentation().setEnabled(e.getDataContext().getData(DataConstants.PROJECT) != null); + e.getPresentation().setEnabled(PlatformDataKeys.PROJECT.getData(e.getDataContext()) != null); } } diff --git a/platform/lang-impl/src/com/intellij/ide/actions/SelectInContextImpl.java b/platform/lang-impl/src/com/intellij/ide/actions/SelectInContextImpl.java index a1d620ff0b2c..233b04226433 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/SelectInContextImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/SelectInContextImpl.java @@ -18,7 +18,10 @@ package com.intellij.ide.actions; import com.intellij.ide.FileEditorProvider; import com.intellij.ide.SelectInContext; -import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.*; import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; @@ -74,7 +77,7 @@ abstract class SelectInContextImpl implements SelectInContext { return null; } - SelectInContext selectInContext = (SelectInContext)dataContext.getData(SelectInContext.DATA_CONTEXT_ID); + SelectInContext selectInContext = SelectInContext.DATA_KEY.getData(dataContext); if (selectInContext == null) { selectInContext = createPsiContext(event); } @@ -146,7 +149,7 @@ abstract class SelectInContextImpl implements SelectInContext { return (JComponent)source; } else { - return safeCast(event.getDataContext().getData(DataConstants.CONTEXT_COMPONENT), JComponent.class); + return safeCast(PlatformDataKeys.CONTEXT_COMPONENT.getData(event.getDataContext()), JComponent.class); } } @@ -220,8 +223,11 @@ abstract class SelectInContextImpl implements SelectInContext { public FileEditorProvider getFileEditorProvider() { return new FileEditorProvider() { public FileEditor openFileEditor() { - final FileEditor[] fileEditors = - FileEditorManager.getInstance(getProject()).openFile(myElementToSelect.getContainingFile().getVirtualFile(), false); + final VirtualFile file = myElementToSelect.getContainingFile().getVirtualFile(); + if (file == null) { + return null; + } + final FileEditor[] fileEditors = FileEditorManager.getInstance(getProject()).openFile(file, false); return fileEditors.length > 0 ? fileEditors[0] : null; } }; diff --git a/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java b/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java index 63e2451e8fe9..b7a4bd8b7d69 100644 --- a/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/commander/CommanderPanel.java @@ -18,7 +18,10 @@ package com.intellij.ide.commander; import com.intellij.history.LocalHistory; import com.intellij.history.LocalHistoryAction; -import com.intellij.ide.*; +import com.intellij.ide.CopyPasteDelegator; +import com.intellij.ide.DeleteProvider; +import com.intellij.ide.IdeBundle; +import com.intellij.ide.IdeView; import com.intellij.ide.projectView.ProjectViewNode; import com.intellij.ide.projectView.impl.ModuleGroup; import com.intellij.ide.projectView.impl.ProjectAbstractTreeStructureBase; @@ -31,9 +34,7 @@ import com.intellij.ide.util.DirectoryChooserUtil; import com.intellij.ide.util.EditSourceUtil; import com.intellij.ide.util.EditorHelper; import com.intellij.ide.util.treeView.AbstractTreeNode; -import com.intellij.ide.util.treeView.smartTree.TreeElement; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.diagnostic.Logger; @@ -117,8 +118,8 @@ public class CommanderPanel extends JPanel { } }, KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH, SystemInfo.isMac ? KeyEvent.META_MASK : KeyEvent.CTRL_MASK), JComponent.WHEN_FOCUSED); - myList.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), ACTION_DRILL_DOWN); - myList.getInputMap(JComponent.WHEN_FOCUSED) + myList.getInputMap(WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), ACTION_DRILL_DOWN); + myList.getInputMap(WHEN_FOCUSED) .put(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, SystemInfo.isMac ? KeyEvent.META_MASK : KeyEvent.CTRL_MASK), ACTION_DRILL_DOWN); myList.getActionMap().put(ACTION_DRILL_DOWN, new AbstractAction() { public void actionPerformed(final ActionEvent e) { @@ -132,9 +133,9 @@ public class CommanderPanel extends JPanel { } } }); - myList.getInputMap(JComponent.WHEN_FOCUSED) + myList.getInputMap(WHEN_FOCUSED) .put(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, SystemInfo.isMac ? KeyEvent.META_MASK : KeyEvent.CTRL_MASK), ACTION_GO_UP); - myList.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), ACTION_GO_UP); + myList.getInputMap(WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), ACTION_GO_UP); myList.getActionMap().put(ACTION_GO_UP, new AbstractAction() { public void actionPerformed(final ActionEvent e) { goUp(); @@ -351,7 +352,7 @@ public class CommanderPanel extends JPanel { private static Object getValueAtIndex(AbstractTreeNode node) { if (node == null) return null; Object value = node.getValue(); - if (value instanceof TreeElement) { + if (value instanceof StructureViewTreeElement) { return ((StructureViewTreeElement)value).getValue(); } return value; @@ -419,46 +420,46 @@ public class CommanderPanel extends JPanel { public final Object getDataImpl(final String dataId) { if (myBuilder == null) return null; final Object selectedValue = getSelectedValue(); - if (DataConstants.PSI_ELEMENT.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { final PsiElement selectedElement = getSelectedElement(); return selectedElement != null && selectedElement.isValid() ? selectedElement : null; } - if (DataConstants.PSI_ELEMENT_ARRAY.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { return filterInvalidElements(getSelectedElements()); } - else if (DataConstantsEx.PASTE_TARGET_PSI_ELEMENT.equals(dataId)) { + else if (LangDataKeys.PASTE_TARGET_PSI_ELEMENT.is(dataId)) { final AbstractTreeNode parentNode = myBuilder.getParentNode(); final Object element = parentNode != null ? parentNode.getValue() : null; return element instanceof PsiElement && ((PsiElement)element).isValid() ? element : null; } - else if (DataConstants.NAVIGATABLE_ARRAY.equals(dataId)) { + else if (PlatformDataKeys.NAVIGATABLE_ARRAY.is(dataId)) { return getNavigatables(); } - else if (DataConstants.COPY_PROVIDER.equals(dataId)) { + else if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { return myCopyPasteDelegator != null ? myCopyPasteDelegator.getCopyProvider() : null; } - else if (DataConstants.CUT_PROVIDER.equals(dataId)) { + else if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) { return myCopyPasteDelegator != null ? myCopyPasteDelegator.getCutProvider() : null; } - else if (DataConstants.PASTE_PROVIDER.equals(dataId)) { + else if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) { return myCopyPasteDelegator != null ? myCopyPasteDelegator.getPasteProvider() : null; } - else if (DataConstants.IDE_VIEW.equals(dataId)) { + else if (LangDataKeys.IDE_VIEW.is(dataId)) { return myIdeView; } - else if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + else if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { return myDeleteElementProvider; } - else if (DataConstants.MODULE.equals(dataId)) { + else if (LangDataKeys.MODULE.is(dataId)) { return selectedValue instanceof Module ? selectedValue : null; } - else if (DataConstantsEx.MODULE_GROUP_ARRAY.equals(dataId)) { + else if (ModuleGroup.ARRAY_DATA_KEY.is(dataId)) { return selectedValue instanceof ModuleGroup ? new ModuleGroup[]{(ModuleGroup)selectedValue} : null; } - else if (DataConstantsEx.LIBRARY_GROUP_ARRAY.equals(dataId)) { + else if (LibraryGroupElement.ARRAY_DATA_KEY.is(dataId)) { return selectedValue instanceof LibraryGroupElement ? new LibraryGroupElement[]{(LibraryGroupElement)selectedValue} : null; } - else if (DataConstantsEx.NAMED_LIBRARY_ARRAY.equals(dataId)) { + else if (NamedLibraryElement.ARRAY_DATA_KEY.is(dataId)) { return selectedValue instanceof NamedLibraryElement ? new NamedLibraryElement[]{(NamedLibraryElement)selectedValue} : null; } diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java index 93daef04a2ca..846cc7cd2462 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesTreeViewPanel.java @@ -35,7 +35,6 @@ import com.intellij.ide.util.treeView.NodeDescriptor; import com.intellij.ide.util.treeView.NodeRenderer; import com.intellij.navigation.ItemPresentation; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.module.Module; @@ -74,8 +73,12 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider { private FavoritesViewTreeBuilder myBuilder; private final CopyPasteDelegator myCopyPasteDelegator; private MouseListener myTreePopupHandler; - @NonNls public static final String CONTEXT_FAVORITES_ROOTS = "FavoritesRoot"; - @NonNls public static final String FAVORITES_LIST_NAME = "FavoritesListName"; + + public static final DataKey CONTEXT_FAVORITES_ROOTS_DATA_KEY = DataKey.create("FavoritesRoot"); + @Deprecated public static final String CONTEXT_FAVORITES_ROOTS = CONTEXT_FAVORITES_ROOTS_DATA_KEY.getName(); + + public static final DataKey FAVORITES_LIST_NAME_DATA_KEY = DataKey.create("FavoritesListName"); + @Deprecated public static final String FAVORITES_LIST_NAME = FAVORITES_LIST_NAME_DATA_KEY.getName(); protected Project myProject; private final String myHelpId; @@ -125,7 +128,7 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider { final FavoritesTreeNodeDescriptor favoritesTreeNodeDescriptor = (FavoritesTreeNodeDescriptor)userObject; AbstractTreeNode treeNode = favoritesTreeNodeDescriptor.getElement(); final ItemPresentation presentation = treeNode.getPresentation(); - String locationString = presentation != null ? presentation.getLocationString() : null; + String locationString = presentation.getLocationString(); if (locationString != null && locationString.length() > 0) { append(" (" + locationString + ")", SimpleTextAttributes.GRAY_ATTRIBUTES); } @@ -209,38 +212,38 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider { } public Object getData(String dataId) { - if (DataConstants.PROJECT.equals(dataId)) { + if (PlatformDataKeys.PROJECT.is(dataId)) { return myProject; } - if (DataConstants.NAVIGATABLE.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { final FavoritesTreeNodeDescriptor[] selectedNodeDescriptors = getSelectedNodeDescriptors(); return selectedNodeDescriptors.length == 1 ? selectedNodeDescriptors[0].getElement() : null; } - if (DataConstants.NAVIGATABLE_ARRAY.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE_ARRAY.is(dataId)) { final List selectedElements = getSelectedElements(Navigatable.class); return selectedElements.toArray(new Navigatable[selectedElements.size()]); } - if (DataConstants.CUT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCutProvider(); } - if (DataConstants.COPY_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCopyProvider(); } - if (DataConstants.PASTE_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getPasteProvider(); } - if (DataConstants.HELP_ID.equals(dataId)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return myHelpId; } - if (DataConstants.PSI_ELEMENT.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { PsiElement[] elements = getSelectedPsiElements(); if (elements.length != 1) { return null; } return elements[0] != null && elements[0].isValid() ? elements[0] : null; } - if (DataConstants.PSI_ELEMENT_ARRAY.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { final PsiElement[] elements = getSelectedPsiElements(); ArrayList result = new ArrayList(); for (PsiElement element : elements) { @@ -251,42 +254,42 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider { return result.isEmpty() ? null : result.toArray(new PsiElement[result.size()]); } - if (DataConstants.IDE_VIEW.equals(dataId)) { + if (LangDataKeys.IDE_VIEW.is(dataId)) { return myIdeView; } - if (DataConstantsEx.TARGET_PSI_ELEMENT.equals(dataId)) { + if (LangDataKeys.TARGET_PSI_ELEMENT.is(dataId)) { return null; } - if (DataConstants.MODULE_CONTEXT.equals(dataId)) { + if (LangDataKeys.MODULE_CONTEXT.is(dataId)) { Module[] selected = getSelectedModules(); return selected != null && selected.length == 1 ? selected[0] : null; } - if (DataConstants.MODULE_CONTEXT_ARRAY.equals(dataId)) { + if (LangDataKeys.MODULE_CONTEXT_ARRAY.is(dataId)) { return getSelectedModules(); } - if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { final Object[] elements = getSelectedNodeElements(); return elements != null && elements.length >= 1 && elements[0] instanceof Module ? myDeleteModuleProvider : myDeletePSIElementProvider; } - if (DataConstantsEx.MODULE_GROUP_ARRAY.equals(dataId)) { + if (ModuleGroup.ARRAY_DATA_KEY.is(dataId)) { final List selectedElements = getSelectedElements(ModuleGroup.class); return selectedElements.isEmpty() ? null : selectedElements.toArray(new ModuleGroup[selectedElements.size()]); } - if (DataConstantsEx.LIBRARY_GROUP_ARRAY.equals(dataId)) { + if (LibraryGroupElement.ARRAY_DATA_KEY.is(dataId)) { final List selectedElements = getSelectedElements(LibraryGroupElement.class); return selectedElements.isEmpty() ? null : selectedElements.toArray(new LibraryGroupElement[selectedElements.size()]); } - if (DataConstantsEx.NAMED_LIBRARY_ARRAY.equals(dataId)) { + if (NamedLibraryElement.ARRAY_DATA_KEY.is(dataId)) { final List selectedElements = getSelectedElements(NamedLibraryElement.class); return selectedElements.isEmpty() ? null : selectedElements.toArray(new NamedLibraryElement[selectedElements.size()]); } - if (CONTEXT_FAVORITES_ROOTS.equals(dataId)) { + if (CONTEXT_FAVORITES_ROOTS_DATA_KEY.is(dataId)) { List result = new ArrayList(); FavoritesTreeNodeDescriptor[] selectedNodeDescriptors = getSelectedNodeDescriptors(); for (FavoritesTreeNodeDescriptor selectedNodeDescriptor : selectedNodeDescriptors) { @@ -297,7 +300,7 @@ public class FavoritesTreeViewPanel extends JPanel implements DataProvider { } return result.toArray(new FavoritesTreeNodeDescriptor[result.size()]); } - if (FAVORITES_LIST_NAME.equals(dataId)) { + if (FAVORITES_LIST_NAME_DATA_KEY.is(dataId)) { return myListName; } FavoritesTreeNodeDescriptor[] descriptors = getSelectedNodeDescriptors(); diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/AddToFavoritesAction.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/AddToFavoritesAction.java index 069a6063f829..c9a0f8cd8ed3 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/AddToFavoritesAction.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/AddToFavoritesAction.java @@ -26,7 +26,6 @@ import com.intellij.ide.projectView.impl.ModuleGroup; import com.intellij.ide.projectView.impl.nodes.*; import com.intellij.ide.util.treeView.AbstractTreeNode; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.module.Module; @@ -118,10 +117,10 @@ public class AddToFavoritesAction extends AnAction { Object elements = retrieveData(null, LangDataKeys.PSI_ELEMENT.getData(dataContext)); elements = retrieveData(elements, LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext)); elements = retrieveData(elements, LangDataKeys.PSI_FILE.getData(dataContext)); - elements = retrieveData(elements, dataContext.getData(DataConstantsEx.MODULE_GROUP_ARRAY)); + elements = retrieveData(elements, ModuleGroup.ARRAY_DATA_KEY.getData(dataContext)); elements = retrieveData(elements, LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext)); - elements = retrieveData(elements, dataContext.getData(DataConstantsEx.LIBRARY_GROUP_ARRAY)); - elements = retrieveData(elements, dataContext.getData(DataConstantsEx.NAMED_LIBRARY_ARRAY)); + elements = retrieveData(elements, LibraryGroupElement.ARRAY_DATA_KEY.getData(dataContext)); + elements = retrieveData(elements, NamedLibraryElement.ARRAY_DATA_KEY.getData(dataContext)); elements = retrieveData(elements, PlatformDataKeys.VIRTUAL_FILE.getData(dataContext)); elements = retrieveData(elements, PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext)); return elements; diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteAllFavoritesListsButThisAction.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteAllFavoritesListsButThisAction.java index fb6085893dbc..cc2634acbba2 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteAllFavoritesListsButThisAction.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteAllFavoritesListsButThisAction.java @@ -23,8 +23,8 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.project.Project; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.Project; /** * User: anna @@ -42,7 +42,7 @@ public class DeleteAllFavoritesListsButThisAction extends AnAction implements Du return; } FavoritesManager favoritesManager = FavoritesManager.getInstance(project); - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); String[] lists = favoritesManager.getAvailableFavoritesLists(); for (String list : lists) { if (!list.equals(listName)) { @@ -58,7 +58,7 @@ public class DeleteAllFavoritesListsButThisAction extends AnAction implements Du e.getPresentation().setEnabled(false); return; } - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); e.getPresentation().setEnabled(listName != null); if (listName != null) { e.getPresentation().setText(IdeBundle.message("action.delete.all.favorites.lists.but.this",listName)); diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteFavoritesListAction.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteFavoritesListAction.java index 699bf45c822f..4e04afe19e45 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteFavoritesListAction.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteFavoritesListAction.java @@ -23,8 +23,8 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.project.Project; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.Project; /** * User: anna @@ -32,7 +32,7 @@ import com.intellij.openapi.project.DumbAware; */ public class DeleteFavoritesListAction extends AnAction implements DumbAware { public DeleteFavoritesListAction() { - super(IdeBundle.message("action.delete.favorites.list","")); + super(IdeBundle.message("action.delete.favorites.list", "")); } public void actionPerformed(AnActionEvent e) { @@ -42,22 +42,24 @@ public class DeleteFavoritesListAction extends AnAction implements DumbAware { return; } FavoritesManager favoritesManager = FavoritesManager.getInstance(project); - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); - favoritesManager.removeFavoritesList(listName); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); + if (listName != null) { + favoritesManager.removeFavoritesList(listName); + } } public void update(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); Project project = PlatformDataKeys.PROJECT.getData(dataContext); - if (project == null){ + if (project == null) { e.getPresentation().setEnabled(false); return; } - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); e.getPresentation().setEnabled(listName != null && !listName.equals(project.getName())); if (listName != null) { - e.getPresentation().setText(IdeBundle.message("action.delete.favorites.list",listName)); - e.getPresentation().setDescription(IdeBundle.message("action.delete.favorites.list",listName)); + e.getPresentation().setText(IdeBundle.message("action.delete.favorites.list", listName)); + e.getPresentation().setDescription(IdeBundle.message("action.delete.favorites.list", listName)); } } } diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteFromFavoritesAction.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteFromFavoritesAction.java index 2c357f19a231..ede6f68f4a7e 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteFromFavoritesAction.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/DeleteFromFavoritesAction.java @@ -46,8 +46,8 @@ public class DeleteFromFavoritesAction extends AnAction implements DumbAware { return; } FavoritesManager favoritesManager = FavoritesManager.getInstance(project); - FavoritesTreeNodeDescriptor[] roots = (FavoritesTreeNodeDescriptor[])dataContext.getData(FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS); - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + FavoritesTreeNodeDescriptor[] roots = FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS_DATA_KEY.getData(dataContext); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); assert roots != null; assert listName != null; for (FavoritesTreeNodeDescriptor root : roots) { @@ -64,8 +64,8 @@ public class DeleteFromFavoritesAction extends AnAction implements DumbAware { e.getPresentation().setEnabled(false); return; } - final String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); - FavoritesTreeNodeDescriptor[] roots = (FavoritesTreeNodeDescriptor[])dataContext.getData(FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS); + final String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); + FavoritesTreeNodeDescriptor[] roots = FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS_DATA_KEY.getData(dataContext); e.getPresentation().setEnabled(listName != null && roots != null && roots.length != 0); } } diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/RenameFavoritesListAction.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/RenameFavoritesListAction.java index 4e9ff70f6b5e..0c80f8a030f2 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/RenameFavoritesListAction.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/RenameFavoritesListAction.java @@ -23,8 +23,8 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; -import com.intellij.openapi.project.Project; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.InputValidator; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.IconLoader; @@ -36,8 +36,8 @@ import com.intellij.util.ArrayUtil; */ public class RenameFavoritesListAction extends AnAction implements DumbAware { public RenameFavoritesListAction() { - super(IdeBundle.message("action.rename.favorites.list"), - IdeBundle.message("action.rename.favorites.list"), IconLoader.getIcon("/actions/menu-replace.png")); + super(IdeBundle.message("action.rename.favorites.list"), IdeBundle.message("action.rename.favorites.list"), + IconLoader.getIcon("/actions/menu-replace.png")); } public void actionPerformed(AnActionEvent e) { @@ -47,26 +47,25 @@ public class RenameFavoritesListAction extends AnAction implements DumbAware { return; } final FavoritesManager favoritesManager = FavoritesManager.getInstance(project); - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); - final String newName = Messages.showInputDialog(project, IdeBundle.message("prompt.input.favorites.list.new.name"), - IdeBundle.message("title.rename.favorites.list"), Messages.getInformationIcon(), listName, - new InputValidator() { - public boolean checkInput(String inputString) { - return inputString != null && inputString.trim().length() > 0; - } + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); + final String newName = Messages + .showInputDialog(project, IdeBundle.message("prompt.input.favorites.list.new.name"), IdeBundle.message("title.rename.favorites.list"), + Messages.getInformationIcon(), listName, new InputValidator() { + public boolean checkInput(String inputString) { + return inputString != null && inputString.trim().length() > 0; + } - public boolean canClose(String inputString) { - String[] lists = favoritesManager.getAvailableFavoritesLists(); - final boolean isNew = ArrayUtil.find(lists, inputString.trim()) == -1; - if (!isNew) { - Messages.showErrorDialog(project, IdeBundle.message( - "error.favorites.list.already.exists", inputString.trim()), IdeBundle.message( - "title.unable.to.add.favorites.list")); - return false; - } - return inputString.trim().length() > 0; - } - }); + public boolean canClose(String inputString) { + String[] lists = favoritesManager.getAvailableFavoritesLists(); + final boolean isNew = ArrayUtil.find(lists, inputString.trim()) == -1; + if (!isNew) { + Messages.showErrorDialog(project, IdeBundle.message("error.favorites.list.already.exists", inputString.trim()), + IdeBundle.message("title.unable.to.add.favorites.list")); + return false; + } + return inputString.trim().length() > 0; + } + }); if (listName != null && newName != null) { favoritesManager.renameFavoritesList(listName, newName); @@ -76,11 +75,11 @@ public class RenameFavoritesListAction extends AnAction implements DumbAware { public void update(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); Project project = PlatformDataKeys.PROJECT.getData(dataContext); - if (project == null){ + if (project == null) { e.getPresentation().setEnabled(false); return; } - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); e.getPresentation().setEnabled(listName != null && !listName.equals(project.getName())); } } diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/SendToFavoritesAction.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/SendToFavoritesAction.java index 108f386e2e30..2397b874fd3e 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/SendToFavoritesAction.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/SendToFavoritesAction.java @@ -44,8 +44,8 @@ public class SendToFavoritesAction extends AnAction{ Project project = PlatformDataKeys.PROJECT.getData(dataContext); final FavoritesManager favoritesManager = FavoritesManager.getInstance(project); - FavoritesTreeNodeDescriptor[] roots = (FavoritesTreeNodeDescriptor[])dataContext.getData(FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS); - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + FavoritesTreeNodeDescriptor[] roots = FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS_DATA_KEY.getData(dataContext); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); doSend(favoritesManager, roots, listName); } @@ -66,13 +66,13 @@ public class SendToFavoritesAction extends AnAction{ e.getPresentation().setEnabled(false); return; } - FavoritesTreeNodeDescriptor[] roots = (FavoritesTreeNodeDescriptor[])dataContext.getData(FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS); + FavoritesTreeNodeDescriptor[] roots = FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS_DATA_KEY.getData(dataContext); if (roots == null || roots.length == 0) { e.getPresentation().setEnabled(false); return; } - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); e.getPresentation().setEnabled(listName != null); } } diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/SendToFavoritesGroup.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/SendToFavoritesGroup.java index 3d45c87ef31b..3f00e755e1fa 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/SendToFavoritesGroup.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/actions/SendToFavoritesGroup.java @@ -22,6 +22,7 @@ import com.intellij.ide.favoritesTreeView.FavoritesTreeNodeDescriptor; import com.intellij.ide.favoritesTreeView.FavoritesTreeViewPanel; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -32,19 +33,19 @@ import java.util.List; * Date: Feb 24, 2005 */ public class SendToFavoritesGroup extends ActionGroup{ - + @NotNull public AnAction[] getChildren(@Nullable AnActionEvent e) { - if (e == null) return AnAction.EMPTY_ARRAY; + if (e == null) return EMPTY_ARRAY; final Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); if (project == null){ - return AnAction.EMPTY_ARRAY; + return EMPTY_ARRAY; } final FavoritesManager favoritesManager = FavoritesManager.getInstance(project); final DataContext dataContext = e.getDataContext(); - FavoritesTreeNodeDescriptor[] roots = (FavoritesTreeNodeDescriptor[])dataContext.getData(FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS); - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + FavoritesTreeNodeDescriptor[] roots = FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS_DATA_KEY.getData(dataContext); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); if (roots == null || roots.length == 0 || listName == null) { - return AnAction.EMPTY_ARRAY; + return EMPTY_ARRAY; } final String[] allLists = favoritesManager.getAvailableFavoritesLists(); @@ -70,8 +71,8 @@ public class SendToFavoritesGroup extends ActionGroup{ public void actionPerformed(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); Project project = PlatformDataKeys.PROJECT.getData(dataContext); - FavoritesTreeNodeDescriptor[] roots = (FavoritesTreeNodeDescriptor[])dataContext.getData(FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS); - String listName = (String)dataContext.getData(FavoritesTreeViewPanel.FAVORITES_LIST_NAME); + FavoritesTreeNodeDescriptor[] roots = FavoritesTreeViewPanel.CONTEXT_FAVORITES_ROOTS_DATA_KEY.getData(dataContext); + String listName = FavoritesTreeViewPanel.FAVORITES_LIST_NAME_DATA_KEY.getData(dataContext); String newName = AddNewFavoritesListAction.doAddNewFavoritesList(project); if (newName != null) { diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/ChangeViewTypeActionBase.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/ChangeViewTypeActionBase.java index 33a5c77e99f6..7aef0d2d3275 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/ChangeViewTypeActionBase.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/ChangeViewTypeActionBase.java @@ -62,6 +62,6 @@ abstract class ChangeViewTypeActionBase extends ToggleAction { } protected static TypeHierarchyBrowserBase getTypeHierarchyBrowser(final DataContext context) { - return (TypeHierarchyBrowserBase)context.getData(TypeHierarchyBrowserBase.TYPE_HIERARCHY_BROWSER_DATA_KEY); + return TypeHierarchyBrowserBase.DATA_KEY.getData(context); } } diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBase.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBase.java index bdf841406801..704a3c3f9077 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBase.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBase.java @@ -19,17 +19,17 @@ package com.intellij.ide.hierarchy; import com.intellij.ide.actions.CloseTabToolbarAction; import com.intellij.ide.actions.ContextHelpAction; import com.intellij.openapi.Disposable; -import com.intellij.openapi.project.Project; import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.SimpleToolWindowPanel; import com.intellij.pom.Navigatable; import com.intellij.psi.NavigatablePsiElement; import com.intellij.psi.PsiElement; -import com.intellij.ui.content.Content; -import com.intellij.ui.content.tabs.PinToolwindowTabAction; import com.intellij.ui.AutoScrollToSourceHandler; import com.intellij.ui.TreeSpeedSearch; import com.intellij.ui.TreeToolTipHandler; +import com.intellij.ui.content.Content; +import com.intellij.ui.content.tabs.PinToolwindowTabAction; import com.intellij.ui.treeStructure.Tree; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.tree.TreeUtil; @@ -194,24 +194,24 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme @Nullable public Object getData(@NonNls final String dataId) { - if (DataConstants.PSI_ELEMENT.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { final PsiElement anElement = getSelectedElement(); return anElement != null && anElement.isValid() ? anElement : null; } - if (DataConstants.PSI_ELEMENT_ARRAY.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { return getSelectedElements(); } - if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { return null; } - if (DataConstants.NAVIGATABLE.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { final DefaultMutableTreeNode selectedNode = getSelectedNode(); if (selectedNode == null) return null; final HierarchyNodeDescriptor descriptor = getDescriptor(selectedNode); if (descriptor == null) return null; return getNavigatable(descriptor); } - if (DataConstants.NAVIGATABLE_ARRAY.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE_ARRAY.is(dataId)) { return getNavigatables(); } return null; diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java index ecaa852c2ac4..849f76b32721 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyBrowserBaseEx.java @@ -55,6 +55,7 @@ import javax.swing.tree.TreeNode; import java.awt.*; import java.text.MessageFormat; import java.util.*; +import java.util.List; public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implements OccurenceNavigator { @@ -74,7 +75,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem private boolean myCachedIsValidBase = false; - private final java.util.List myRunOnDisposeList = new ArrayList(); + private final List myRunOnDisposeList = new ArrayList(); private final HashMap myOccurrenceNavigators = new HashMap(); private static final OccurenceNavigator EMPTY_NAVIGATOR = new OccurenceNavigator() { @@ -401,7 +402,7 @@ public abstract class HierarchyBrowserBaseEx extends HierarchyBrowserBase implem if (getBrowserDataKey().equals(dataId)) { return this; } - else if (DataConstants.HELP_ID.equals(dataId)) { + else if (PlatformDataKeys.HELP_ID.is(dataId)) { return HELP_ID; } return super.getData(dataId); diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/MethodHierarchyBrowserBase.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/MethodHierarchyBrowserBase.java index 435090347d35..2602895c0b20 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/MethodHierarchyBrowserBase.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/MethodHierarchyBrowserBase.java @@ -34,7 +34,8 @@ public abstract class MethodHierarchyBrowserBase extends HierarchyBrowserBaseEx @SuppressWarnings({"UnresolvedPropertyKey"}) public static final String METHOD_TYPE = IdeBundle.message("title.hierarchy.method"); - @NonNls public static final String METHOD_HIERARCHY_BROWSER_DATA_KEY = "com.intellij.ide.hierarchy.MethodHierarchyBrowserBase"; + public static final DataKey DATA_KEY = DataKey.create("com.intellij.ide.hierarchy.MethodHierarchyBrowserBase"); + @Deprecated @NonNls public static final String METHOD_HIERARCHY_BROWSER_DATA_KEY = DATA_KEY.getName(); public MethodHierarchyBrowserBase(final Project project, final PsiElement method) { super(project, method); @@ -87,7 +88,7 @@ public abstract class MethodHierarchyBrowserBase extends HierarchyBrowserBaseEx @NotNull protected String getBrowserDataKey() { - return METHOD_HIERARCHY_BROWSER_DATA_KEY; + return DATA_KEY.getName(); } @NotNull @@ -125,7 +126,7 @@ public abstract class MethodHierarchyBrowserBase extends HierarchyBrowserBaseEx public static class BaseOnThisMethodAction extends BaseOnThisElementAction { public BaseOnThisMethodAction() { - super(IdeBundle.message("action.base.on.this.method"), IdeActions.ACTION_METHOD_HIERARCHY, METHOD_HIERARCHY_BROWSER_DATA_KEY); + super(IdeBundle.message("action.base.on.this.method"), IdeActions.ACTION_METHOD_HIERARCHY, DATA_KEY.getName()); } } diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/TypeHierarchyBrowserBase.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/TypeHierarchyBrowserBase.java index c2ac2c194a74..ae4f8b9eba5a 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/TypeHierarchyBrowserBase.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/TypeHierarchyBrowserBase.java @@ -39,7 +39,8 @@ public abstract class TypeHierarchyBrowserBase extends HierarchyBrowserBaseEx { private final MyDeleteProvider myDeleteElementProvider = new MyDeleteProvider(); - public static final String TYPE_HIERARCHY_BROWSER_DATA_KEY = "com.intellij.ide.hierarchy.TypeHierarchyBrowserBase"; + public static final DataKey DATA_KEY = DataKey.create("com.intellij.ide.hierarchy.TypeHierarchyBrowserBase"); + @Deprecated public static final String TYPE_HIERARCHY_BROWSER_DATA_KEY = DATA_KEY.getName(); public TypeHierarchyBrowserBase(final Project project, final PsiElement element) { super(project, element); @@ -70,7 +71,7 @@ public abstract class TypeHierarchyBrowserBase extends HierarchyBrowserBaseEx { @NotNull protected String getBrowserDataKey() { - return TYPE_HIERARCHY_BROWSER_DATA_KEY; + return DATA_KEY.getName(); } @NotNull @@ -79,7 +80,7 @@ public abstract class TypeHierarchyBrowserBase extends HierarchyBrowserBaseEx { } public final Object getData(final String dataId) { - if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { return myDeleteElementProvider; } return super.getData(dataId); @@ -123,7 +124,7 @@ public abstract class TypeHierarchyBrowserBase extends HierarchyBrowserBaseEx { protected static class BaseOnThisTypeAction extends BaseOnThisElementAction { public BaseOnThisTypeAction() { - super("", IdeActions.ACTION_TYPE_HIERARCHY, TYPE_HIERARCHY_BROWSER_DATA_KEY); + super("", IdeActions.ACTION_TYPE_HIERARCHY, DATA_KEY.getName()); } @Override diff --git a/platform/lang-impl/src/com/intellij/ide/highlighter/custom/impl/CustomFileTypeBraceMatcher.java b/platform/lang-impl/src/com/intellij/ide/highlighter/custom/impl/CustomFileTypeBraceMatcher.java index 1c7c996e2810..a33cd28629f0 100644 --- a/platform/lang-impl/src/com/intellij/ide/highlighter/custom/impl/CustomFileTypeBraceMatcher.java +++ b/platform/lang-impl/src/com/intellij/ide/highlighter/custom/impl/CustomFileTypeBraceMatcher.java @@ -26,11 +26,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Dec 6, 2004 - * Time: 8:36:58 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ class CustomFileTypeBraceMatcher implements BraceMatcher { public int getBraceTokenGroupId(IElementType tokenType) { diff --git a/platform/lang-impl/src/com/intellij/ide/highlighter/custom/impl/CustomFileTypeQuoteHandler.java b/platform/lang-impl/src/com/intellij/ide/highlighter/custom/impl/CustomFileTypeQuoteHandler.java index 7507656cdc6f..2c9c64c8550b 100644 --- a/platform/lang-impl/src/com/intellij/ide/highlighter/custom/impl/CustomFileTypeQuoteHandler.java +++ b/platform/lang-impl/src/com/intellij/ide/highlighter/custom/impl/CustomFileTypeQuoteHandler.java @@ -24,11 +24,7 @@ import com.intellij.psi.CustomHighlighterTokenType; import com.intellij.psi.tree.IElementType; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Dec 6, 2004 - * Time: 8:34:21 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ class CustomFileTypeQuoteHandler implements QuoteHandler { public boolean isClosingQuote(HighlighterIterator iterator, int offset) { diff --git a/platform/lang-impl/src/com/intellij/ide/highlighter/custom/tokens/BraceTokenParser.java b/platform/lang-impl/src/com/intellij/ide/highlighter/custom/tokens/BraceTokenParser.java index d40d7693dc62..dea3904e99a7 100644 --- a/platform/lang-impl/src/com/intellij/ide/highlighter/custom/tokens/BraceTokenParser.java +++ b/platform/lang-impl/src/com/intellij/ide/highlighter/custom/tokens/BraceTokenParser.java @@ -19,11 +19,7 @@ package com.intellij.ide.highlighter.custom.tokens; import com.intellij.psi.tree.IElementType; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Dec 6, 2004 - * Time: 7:40:12 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class BraceTokenParser extends PrefixedTokenParser { public BraceTokenParser(String prefix, IElementType tokenType) { diff --git a/platform/lang-impl/src/com/intellij/ide/impl/SelectInTargetPsiWrapper.java b/platform/lang-impl/src/com/intellij/ide/impl/SelectInTargetPsiWrapper.java index 1f6fe4393a0c..a71d9e5c52b7 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/SelectInTargetPsiWrapper.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/SelectInTargetPsiWrapper.java @@ -1,83 +1,83 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.intellij.ide.impl; - -import com.intellij.ide.SelectInContext; -import com.intellij.ide.SelectInTarget; -import com.intellij.openapi.editor.Document; -import com.intellij.openapi.fileEditor.FileDocumentManager; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; -import org.jetbrains.annotations.NotNull; - - -public abstract class SelectInTargetPsiWrapper implements SelectInTarget { - protected final Project myProject; - - protected SelectInTargetPsiWrapper(@NotNull final Project project) { - myProject = project; - } - - public abstract String toString(); - - protected abstract boolean canSelect(PsiFileSystemItem file); - - public final boolean canSelect(SelectInContext context) { - if (myProject.isDisposed()) return false; - - VirtualFile virtualFile = context.getVirtualFile(); - if (!virtualFile.isValid()) return false; - - final Document document = FileDocumentManager.getInstance().getDocument(virtualFile); - final PsiFileSystemItem psiFile; - if (document != null) { - psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(document); - } - else if (context.getSelectorInFile() instanceof PsiFile) { - psiFile = (PsiFile)context.getSelectorInFile(); - } - else if (virtualFile.isDirectory()) { - psiFile = PsiManager.getInstance(myProject).findDirectory(virtualFile); - } - else { - psiFile = PsiManager.getInstance(myProject).findFile(virtualFile); - } - return psiFile != null && canSelect(psiFile) || canWorkWithCustomObjects(); - } - - public final void selectIn(SelectInContext context, final boolean requestFocus) { - VirtualFile file = context.getVirtualFile(); - Object selector = context.getSelectorInFile(); - if (selector == null) { - PsiManager psiManager = PsiManager.getInstance(myProject); - selector = file.isDirectory() ? psiManager.findDirectory(file) : psiManager.findFile(file); - } - - if (selector instanceof PsiElement) { - select(((PsiElement)selector).getOriginalElement(), requestFocus); - } else { - select(selector, file, requestFocus); - } - } - - protected abstract void select(final Object selector, VirtualFile virtualFile, final boolean requestFocus); - - protected abstract boolean canWorkWithCustomObjects(); - - protected abstract void select(PsiElement element, boolean requestFocus); -} +/* + * Copyright 2000-2009 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.intellij.ide.impl; + +import com.intellij.ide.SelectInContext; +import com.intellij.ide.SelectInTarget; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.*; +import org.jetbrains.annotations.NotNull; + + +public abstract class SelectInTargetPsiWrapper implements SelectInTarget { + protected final Project myProject; + + protected SelectInTargetPsiWrapper(@NotNull final Project project) { + myProject = project; + } + + public abstract String toString(); + + protected abstract boolean canSelect(PsiFileSystemItem file); + + public final boolean canSelect(SelectInContext context) { + if (myProject.isDisposed()) return false; + + VirtualFile virtualFile = context.getVirtualFile(); + if (!virtualFile.isValid()) return false; + + final Document document = FileDocumentManager.getInstance().getDocument(virtualFile); + final PsiFileSystemItem psiFile; + if (document != null) { + psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(document); + } + else if (context.getSelectorInFile() instanceof PsiFile) { + psiFile = (PsiFile)context.getSelectorInFile(); + } + else if (virtualFile.isDirectory()) { + psiFile = PsiManager.getInstance(myProject).findDirectory(virtualFile); + } + else { + psiFile = PsiManager.getInstance(myProject).findFile(virtualFile); + } + return psiFile != null && canSelect(psiFile) || canWorkWithCustomObjects(); + } + + public final void selectIn(SelectInContext context, final boolean requestFocus) { + VirtualFile file = context.getVirtualFile(); + Object selector = context.getSelectorInFile(); + if (selector == null) { + PsiManager psiManager = PsiManager.getInstance(myProject); + selector = file.isDirectory() ? psiManager.findDirectory(file) : psiManager.findFile(file); + } + + if (selector instanceof PsiElement) { + select(((PsiElement)selector).getOriginalElement(), requestFocus); + } else { + select(selector, file, requestFocus); + } + } + + protected abstract void select(final Object selector, VirtualFile virtualFile, final boolean requestFocus); + + protected abstract boolean canWorkWithCustomObjects(); + + protected abstract void select(PsiElement element, boolean requestFocus); +} diff --git a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/ModuleRule.java b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/ModuleRule.java index 991f34c4cac2..50b9803f90d9 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/ModuleRule.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/ModuleRule.java @@ -18,8 +18,9 @@ package com.intellij.ide.impl.dataRules; import com.intellij.ide.DataManager; import com.intellij.ide.impl.DataManagerImpl; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; @@ -31,20 +32,20 @@ import com.intellij.psi.PsiElement; */ public class ModuleRule implements GetDataRule { public Object getData(DataProvider dataProvider) { - Object moduleContext = dataProvider.getData(DataConstants.MODULE_CONTEXT); + Object moduleContext = LangDataKeys.MODULE_CONTEXT.getData(dataProvider); if (moduleContext != null) { return moduleContext; } - Project project = (Project)dataProvider.getData(DataConstants.PROJECT); + Project project = PlatformDataKeys.PROJECT.getData(dataProvider); if (project == null) { - PsiElement element = (PsiElement)dataProvider.getData(DataConstants.PSI_ELEMENT); + PsiElement element = LangDataKeys.PSI_ELEMENT.getData(dataProvider); if (element == null || !element.isValid()) return null; project = element.getProject(); } - VirtualFile virtualFile = (VirtualFile)dataProvider.getData(DataConstants.VIRTUAL_FILE); + VirtualFile virtualFile = PlatformDataKeys.VIRTUAL_FILE.getData(dataProvider); if (virtualFile == null) { - GetDataRule dataRule = ((DataManagerImpl)DataManager.getInstance()).getDataRule(DataConstants.VIRTUAL_FILE); + GetDataRule dataRule = ((DataManagerImpl)DataManager.getInstance()).getDataRule(PlatformDataKeys.VIRTUAL_FILE.getName()); if (dataRule != null) { virtualFile = (VirtualFile)dataRule.getData(dataProvider); } diff --git a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/NavigatableRule.java b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/NavigatableRule.java index 2d604a21caf0..91daabb008c9 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/NavigatableRule.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/NavigatableRule.java @@ -17,25 +17,30 @@ package com.intellij.ide.impl.dataRules; import com.intellij.ide.util.EditSourceUtil; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.pom.Navigatable; import com.intellij.psi.PsiElement; public class NavigatableRule implements GetDataRule { public Object getData(DataProvider dataProvider) { - final OpenFileDescriptor openFileDescriptor = (OpenFileDescriptor)dataProvider.getData(DataConstants.OPEN_FILE_DESCRIPTOR); - if (openFileDescriptor != null && openFileDescriptor.getFile().isValid()) { - return openFileDescriptor; + final Navigatable navigatable = PlatformDataKeys.NAVIGATABLE.getData(dataProvider); + if (navigatable != null && navigatable instanceof OpenFileDescriptor) { + final OpenFileDescriptor openFileDescriptor = (OpenFileDescriptor)navigatable; + + if (openFileDescriptor.getFile().isValid()) { + return openFileDescriptor; + } } - final PsiElement element = (PsiElement)dataProvider.getData(DataConstants.PSI_ELEMENT); + final PsiElement element = LangDataKeys.PSI_ELEMENT.getData(dataProvider); if (element != null) { return EditSourceUtil.getDescriptor(element); } - final Object selection = dataProvider.getData(DataConstants.SELECTED_ITEM); + final Object selection = PlatformDataKeys.SELECTED_ITEM.getData(dataProvider); if (selection instanceof Navigatable) { return selection; } diff --git a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PasteTargetRule.java b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PasteTargetRule.java index d171a3e6734d..edd827fc64b8 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PasteTargetRule.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PasteTargetRule.java @@ -16,12 +16,11 @@ package com.intellij.ide.impl.dataRules; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.LangDataKeys; public class PasteTargetRule implements GetDataRule { public Object getData(DataProvider dataProvider) { - Object data = dataProvider.getData(DataConstants.PSI_ELEMENT); - return data; + return LangDataKeys.PSI_ELEMENT.getData(dataProvider); } } diff --git a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PsiElementFromSelectionRule.java b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PsiElementFromSelectionRule.java index 10177a2cb6ae..66290683fbda 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PsiElementFromSelectionRule.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PsiElementFromSelectionRule.java @@ -16,13 +16,13 @@ package com.intellij.ide.impl.dataRules; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.psi.PsiElement; public class PsiElementFromSelectionRule implements GetDataRule { public Object getData(DataProvider dataProvider) { - final Object element = dataProvider.getData(DataConstants.SELECTED_ITEM); + final Object element = dataProvider.getData(PlatformDataKeys.SELECTED_ITEM.getName()); if (element instanceof PsiElement) { PsiElement psiElement = (PsiElement)element; if (psiElement.isValid()) { @@ -32,4 +32,4 @@ public class PsiElementFromSelectionRule implements GetDataRule { return null; } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PsiFileRule.java b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PsiFileRule.java index b9a969eb4c82..198908f7d1c1 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PsiFileRule.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/PsiFileRule.java @@ -16,8 +16,9 @@ package com.intellij.ide.impl.dataRules; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; @@ -25,14 +26,14 @@ import com.intellij.psi.PsiManager; public class PsiFileRule implements GetDataRule { public Object getData(DataProvider dataProvider) { - final PsiElement element = (PsiElement)dataProvider.getData(DataConstants.PSI_ELEMENT); - if (element != null){ + final PsiElement element = LangDataKeys.PSI_ELEMENT.getData(dataProvider); + if (element != null) { return element.getContainingFile(); } - Project project = (Project)dataProvider.getData(DataConstants.PROJECT); - if (project != null){ - VirtualFile vFile = (VirtualFile)dataProvider.getData(DataConstants.VIRTUAL_FILE); - if (vFile != null){ + Project project = PlatformDataKeys.PROJECT.getData(dataProvider); + if (project != null) { + VirtualFile vFile = PlatformDataKeys.VIRTUAL_FILE.getData(dataProvider); + if (vFile != null) { return PsiManager.getInstance(project).findFile(vFile); } } diff --git a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/VirtualFileArrayRule.java b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/VirtualFileArrayRule.java index e37cb5dc9351..f124f54e4491 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/VirtualFileArrayRule.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/VirtualFileArrayRule.java @@ -16,15 +16,19 @@ package com.intellij.ide.impl.dataRules; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiDirectoryContainer; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.usages.Usage; import com.intellij.usages.UsageTarget; import com.intellij.usages.UsageView; @@ -40,46 +44,46 @@ public class VirtualFileArrayRule implements GetDataRule { public Object getData(final DataProvider dataProvider) { // Try to detect multiselection. - Project project = (Project)dataProvider.getData(DataConstants.PROJECT_CONTEXT); + Project project = PlatformDataKeys.PROJECT_CONTEXT.getData(dataProvider); if (project != null && !project.isDisposed()) { return ProjectRootManager.getInstance(project).getContentRoots(); } - Module[] selectedModules = (Module[])dataProvider.getData(DataConstants.MODULE_CONTEXT_ARRAY); + Module[] selectedModules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataProvider); if (selectedModules != null && selectedModules.length > 0) { return getFilesFromModules(selectedModules); } - Module selectedModule = (Module)dataProvider.getData(DataConstants.MODULE_CONTEXT); + Module selectedModule = LangDataKeys.MODULE_CONTEXT.getData(dataProvider); if (selectedModule != null && !selectedModule.isDisposed()) { return ModuleRootManager.getInstance(selectedModule).getContentRoots(); } - PsiElement[] psiElements = (PsiElement[])dataProvider.getData(DataConstants.PSI_ELEMENT_ARRAY); + PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataProvider); if (psiElements != null && psiElements.length != 0) { return getFilesFromPsiElements(psiElements); } // VirtualFile -> VirtualFile[] - VirtualFile vFile = (VirtualFile)dataProvider.getData(DataConstants.VIRTUAL_FILE); + VirtualFile vFile = PlatformDataKeys.VIRTUAL_FILE.getData(dataProvider); if (vFile != null) { return new VirtualFile[]{vFile}; } // - PsiFile psiFile = (PsiFile)dataProvider.getData(DataConstants.PSI_FILE); + PsiFile psiFile = LangDataKeys.PSI_FILE.getData(dataProvider); if (psiFile != null && psiFile.getVirtualFile() != null) { return new VirtualFile[]{psiFile.getVirtualFile()}; } - PsiElement elem = (PsiElement)dataProvider.getData(DataConstants.PSI_ELEMENT); + PsiElement elem = LangDataKeys.PSI_ELEMENT.getData(dataProvider); if (elem != null) { return getFilesFromPsiElement(elem); } - Usage[] usages = (Usage[])dataProvider.getData(UsageView.USAGES); - UsageTarget[] usageTargets = (UsageTarget[])dataProvider.getData(UsageView.USAGE_TARGETS); + Usage[] usages = UsageView.USAGES_KEY.getData(dataProvider); + UsageTarget[] usageTargets = UsageView.USAGE_TARGETS_KEY.getData(dataProvider); if (usages != null || usageTargets != null) { return getFilesFromUsages(usages, usageTargets); } diff --git a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/VirtualFileRule.java b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/VirtualFileRule.java index e3e8fbb3a71f..95d4eeb78349 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/dataRules/VirtualFileRule.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/dataRules/VirtualFileRule.java @@ -16,8 +16,9 @@ package com.intellij.ide.impl.dataRules; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; @@ -26,7 +27,7 @@ import com.intellij.psi.util.PsiUtilBase; public class VirtualFileRule implements GetDataRule { public Object getData(final DataProvider dataProvider) { // Try to detect multiselection. - PsiElement[] psiElements = (PsiElement[])dataProvider.getData(DataConstants.PSI_ELEMENT_ARRAY); + PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataProvider); if (psiElements != null) { for (PsiElement elem : psiElements) { VirtualFile virtualFile = PsiUtilBase.getVirtualFile(elem); @@ -34,16 +35,16 @@ public class VirtualFileRule implements GetDataRule { } } - VirtualFile[] virtualFiles = (VirtualFile[])dataProvider.getData(DataConstants.VIRTUAL_FILE_ARRAY); + VirtualFile[] virtualFiles = PlatformDataKeys.VIRTUAL_FILE_ARRAY.getData(dataProvider); if (virtualFiles != null && virtualFiles.length == 1) { return virtualFiles[0]; } - PsiFile psiFile = (PsiFile)dataProvider.getData(DataConstants.PSI_FILE); + PsiFile psiFile = LangDataKeys.PSI_FILE.getData(dataProvider); if (psiFile != null) { return psiFile.getVirtualFile(); } - PsiElement elem = (PsiElement)dataProvider.getData(DataConstants.PSI_ELEMENT); + PsiElement elem = LangDataKeys.PSI_ELEMENT.getData(dataProvider); if (elem == null) { return null; } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileDirMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FileDirMacro.java index dbfffeb11024..a1f8bc0812e3 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileDirMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileDirMacro.java @@ -16,7 +16,6 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.vfs.VirtualFile; @@ -31,16 +30,7 @@ public final class FileDirMacro extends Macro { } public String expand(DataContext dataContext) { - //Project project = (Project)dataContext.getData(DataConstants.PROJECT); - //if (project == null) return null; - //VirtualFile file = (VirtualFile)dataContext.getData(DataConstantsEx.VIRTUAL_FILE); - //if (file == null) return null; - //if (!file.isDirectory()) { - // file = file.getParent(); - // if (file == null) return null; - //} - VirtualFile dir = DataAccessors.VIRTUAL_DIR_OR_PARENT.from(dataContext); - if (dir == null) return null; - return getPath(dir); + VirtualFile vFile = getVirtualDirOrParent(dataContext); + return vFile != null ? getPath(vFile) : null; } } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileDirRelativeToProjectRootMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FileDirRelativeToProjectRootMacro.java index 45db0fe1bb0c..50e67ae8e975 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileDirRelativeToProjectRootMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileDirRelativeToProjectRootMacro.java @@ -17,7 +17,6 @@ package com.intellij.ide.macro; import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; @@ -36,16 +35,24 @@ public class FileDirRelativeToProjectRootMacro extends Macro { public String expand(final DataContext dataContext) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); - if (project == null) return null; - VirtualFile file = (VirtualFile)dataContext.getData(DataConstants.VIRTUAL_FILE); - if (file == null) return null; + if (project == null) { + return null; + } + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (file == null) { + return null; + } if (!file.isDirectory()) { file = file.getParent(); - if (file == null) return null; + if (file == null) { + return null; + } } final VirtualFile contentRoot = ProjectRootManager.getInstance(project).getFileIndex().getContentRootForFile(file); - if (contentRoot == null) return null; + if (contentRoot == null) { + return null; + } return FileUtil.getRelativePath(getIOFile(contentRoot), getIOFile(file)); } } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileDirRelativeToSourcepathMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FileDirRelativeToSourcepathMacro.java index d3dcb9dbe36d..9bc235915a8e 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileDirRelativeToSourcepathMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileDirRelativeToSourcepathMacro.java @@ -17,7 +17,6 @@ package com.intellij.ide.macro; import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; @@ -36,12 +35,18 @@ public class FileDirRelativeToSourcepathMacro extends Macro { public String expand(final DataContext dataContext) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); - if (project == null) return null; - VirtualFile file = (VirtualFile)dataContext.getData(DataConstants.VIRTUAL_FILE); - if (file == null) return null; + if (project == null) { + return null; + } + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (file == null) { + return null; + } if (!file.isDirectory()) { file = file.getParent(); - if (file == null) return null; + if (file == null) { + return null; + } } final VirtualFile sourceRoot = ProjectRootManager.getInstance(project).getFileIndex().getSourceRootForFile(file); if (sourceRoot == null) return null; diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileExtMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FileExtMacro.java index dc267fa37a13..a875a40fd717 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileExtMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileExtMacro.java @@ -17,8 +17,8 @@ package com.intellij.ide.macro; import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.vfs.VirtualFile; public final class FileExtMacro extends Macro { @@ -31,8 +31,10 @@ public final class FileExtMacro extends Macro { } public String expand(DataContext dataContext) { - VirtualFile file = (VirtualFile)dataContext.getData(DataConstants.VIRTUAL_FILE); - if (file == null ) return null; + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (file == null) { + return null; + } return file.getExtension(); } } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileNameWithoutExtension.java b/platform/lang-impl/src/com/intellij/ide/macro/FileNameWithoutExtension.java index cdf97136a2f0..c880d25e6901 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileNameWithoutExtension.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileNameWithoutExtension.java @@ -17,8 +17,8 @@ package com.intellij.ide.macro; import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.vfs.VirtualFile; @@ -32,8 +32,10 @@ public final class FileNameWithoutExtension extends FileNameMacro { } public String expand(DataContext dataContext) { - VirtualFile file = (VirtualFile)dataContext.getData(DataConstants.VIRTUAL_FILE); - if (file == null) return null; + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (file == null) { + return null; + } return file.getNameWithoutExtension(); } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FilePathRelativeToProjectRootMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FilePathRelativeToProjectRootMacro.java index 357140e7504f..6b8cb6d5b7e4 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FilePathRelativeToProjectRootMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FilePathRelativeToProjectRootMacro.java @@ -17,7 +17,6 @@ package com.intellij.ide.macro; import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; @@ -36,11 +35,17 @@ public class FilePathRelativeToProjectRootMacro extends Macro { public String expand(final DataContext dataContext) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); - if (project == null) return null; - VirtualFile file = (VirtualFile)dataContext.getData(DataConstants.VIRTUAL_FILE); - if (file == null) return null; + if (project == null) { + return null; + } + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (file == null) { + return null; + } final VirtualFile contentRoot = ProjectRootManager.getInstance(project).getFileIndex().getContentRootForFile(file); - if (contentRoot == null) return null; + if (contentRoot == null) { + return null; + } return FileUtil.getRelativePath(getIOFile(contentRoot), getIOFile(file)); } } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FilePathRelativeToSourcepathMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FilePathRelativeToSourcepathMacro.java index 3b0e4d06477a..3c72e9dff462 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FilePathRelativeToSourcepathMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FilePathRelativeToSourcepathMacro.java @@ -17,7 +17,6 @@ package com.intellij.ide.macro; import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; @@ -36,11 +35,17 @@ public class FilePathRelativeToSourcepathMacro extends Macro { public String expand(final DataContext dataContext) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); - if (project == null) return null; - VirtualFile file = (VirtualFile)dataContext.getData(DataConstants.VIRTUAL_FILE); - if (file == null) return null; + if (project == null) { + return null; + } + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (file == null) { + return null; + } final VirtualFile sourceRoot = ProjectRootManager.getInstance(project).getFileIndex().getSourceRootForFile(file); - if (sourceRoot == null) return null; + if (sourceRoot == null) { + return null; + } return FileUtil.getRelativePath(getIOFile(sourceRoot), getIOFile(file)); } } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileRelativeDirMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FileRelativeDirMacro.java index b73d1283d3f6..3eb55b0bf4ea 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileRelativeDirMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileRelativeDirMacro.java @@ -16,9 +16,9 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -33,20 +33,12 @@ public class FileRelativeDirMacro extends Macro { } public String expand(DataContext dataContext) { - //Project project = (Project)dataContext.getData(DataConstants.PROJECT); - //if (project == null) return null; - //VirtualFile file = (VirtualFile)dataContext.getData(DataConstantsEx.VIRTUAL_FILE); - //if (file == null) return null; - //if (!file.isDirectory()){ - // file = file.getParent(); - // if (file == null) return null; - //} - final VirtualFile baseDir = DataAccessors.PROJECT_BASE_DIR.from(dataContext); + final VirtualFile baseDir = PlatformDataKeys.PROJECT_FILE_DIRECTORY.getData(dataContext); if (baseDir == null) { return null; } - VirtualFile dir = DataAccessors.VIRTUAL_DIR_OR_PARENT.from(dataContext); + VirtualFile dir = getVirtualDirOrParent(dataContext); if (dir == null) return null; return FileUtil.getRelativePath(VfsUtil.virtualToIoFile(baseDir), VfsUtil.virtualToIoFile(dir)); } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileRelativePathMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/FileRelativePathMacro.java index 87c605489e71..9d8230f1ed11 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/FileRelativePathMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileRelativePathMacro.java @@ -16,9 +16,10 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -33,12 +34,13 @@ public class FileRelativePathMacro extends Macro { } public String expand(DataContext dataContext) { - final VirtualFile baseDir = DataAccessors.PROJECT_BASE_DIR.from(dataContext); + Project project = PlatformDataKeys.PROJECT.getData(dataContext); + final VirtualFile baseDir = project == null ? null : project.getBaseDir(); if (baseDir == null) { return null; } - VirtualFile file = DataAccessors.VIRTUAL_FILE.from(dataContext); + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); if (file == null) return null; return FileUtil.getRelativePath(VfsUtil.virtualToIoFile(baseDir), VfsUtil.virtualToIoFile(file)); } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/Macro.java b/platform/lang-impl/src/com/intellij/ide/macro/Macro.java index eb7ad0c247d5..0f29739e5f71 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/Macro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/Macro.java @@ -17,6 +17,7 @@ package com.intellij.ide.macro; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NonNls; @@ -61,6 +62,15 @@ public abstract class Macro { return new File(getPath(file)); } + @Nullable + protected static VirtualFile getVirtualDirOrParent(DataContext dataContext) { + VirtualFile vFile = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (vFile != null && !vFile.isDirectory()) { + vFile = vFile.getParent(); + } + return vFile; + } + public static class Silent extends Macro { private final Macro myDelegate; private final String myValue; diff --git a/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java b/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java index 60c17cdcb0d3..ceeffa3c7da2 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java @@ -19,7 +19,6 @@ package com.intellij.ide.macro; import com.intellij.ide.DataManager; import com.intellij.ide.IdeEventQueue; import com.intellij.ide.impl.DataManagerImpl; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.components.ServiceManager; @@ -58,7 +57,6 @@ public final class MacroManager { registerMacro(new JdkPathMacro()); registerMacro(new PromptMacro()); registerMacro(new SourcepathEntryMacro()); - //registerMacro(new ProjectFilePathMacro()); registerMacro(new ProjectFileDirMacro()); registerMacro(new ProjectNameMacro()); registerMacro(new ProjectPathMacro()); @@ -101,15 +99,20 @@ public final class MacroManager { } private static DataContext getCorrectContext(DataContext dataContext) { - if (dataContext.getData(DataConstants.FILE_EDITOR) != null) return dataContext; + if (PlatformDataKeys.FILE_EDITOR.getData(dataContext) != null) { + return dataContext; + } Project project = PlatformDataKeys.PROJECT.getData(dataContext); - if (project == null) return dataContext; + if (project == null) { + return dataContext; + } FileEditorManager editorManager = FileEditorManager.getInstance(project); VirtualFile[] files = editorManager.getSelectedFiles(); - if (files.length == 0) return dataContext; + if (files.length == 0) { + return dataContext; + } FileEditor fileEditor = editorManager.getSelectedEditor(files[0]); - return fileEditor == null ? dataContext : - DataManager.getInstance().getDataContext(fileEditor.getComponent()); + return fileEditor == null ? dataContext : DataManager.getInstance().getDataContext(fileEditor.getComponent()); } /** diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ModuleFileDirMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/ModuleFileDirMacro.java index 8362a2a4101f..7edfa1a3c619 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/ModuleFileDirMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/ModuleFileDirMacro.java @@ -16,9 +16,10 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.module.Module; import java.io.File; @@ -32,7 +33,8 @@ public final class ModuleFileDirMacro extends Macro { } public String expand(DataContext dataContext) { - final String path = DataAccessors.MODULE_FILE_PATH.from(dataContext); + final Module module = LangDataKeys.MODULE.getData(dataContext); + final String path = module != null ? module.getModuleFilePath() : null; if (path == null) { return null; } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ModuleFilePathMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/ModuleFilePathMacro.java index 128550e7f79f..dc9612b295c6 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/ModuleFilePathMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/ModuleFilePathMacro.java @@ -16,9 +16,10 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.module.Module; public final class ModuleFilePathMacro extends Macro { public String getName() { @@ -30,6 +31,7 @@ public final class ModuleFilePathMacro extends Macro { } public String expand(DataContext dataContext) { - return DataAccessors.MODULE_FILE_PATH.from(dataContext); + final Module module = LangDataKeys.MODULE.getData(dataContext); + return module != null ? module.getModuleFilePath() : null; } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ModulePathMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/ModulePathMacro.java index 3d27521a17c4..f40aaf4eb37a 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/ModulePathMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/ModulePathMacro.java @@ -16,9 +16,9 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.ProjectRootsTraversing; @@ -32,7 +32,7 @@ public final class ModulePathMacro extends Macro { } public String expand(DataContext dataContext) { - final Module module = DataAccessors.MODULE.from(dataContext); + final Module module = LangDataKeys.MODULE.getData(dataContext); if (module == null) { return null; } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ProjectFileDirMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/ProjectFileDirMacro.java index 179a4ab18497..cf86f6eb9386 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/ProjectFileDirMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/ProjectFileDirMacro.java @@ -16,9 +16,9 @@ package com.intellij.ide.macro; -import com.intellij.ide.DataAccessors; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nullable; @@ -34,7 +34,7 @@ public final class ProjectFileDirMacro extends Macro { @Nullable public String expand(DataContext dataContext) { - final VirtualFile baseDir = DataAccessors.PROJECT_BASE_DIR.from(dataContext); + final VirtualFile baseDir = PlatformDataKeys.PROJECT_FILE_DIRECTORY.getData(dataContext); if (baseDir == null) { return null; } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/SourcepathEntryMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/SourcepathEntryMacro.java index 0c89c4895fce..18b110297982 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/SourcepathEntryMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/SourcepathEntryMacro.java @@ -17,7 +17,6 @@ package com.intellij.ide.macro; import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; @@ -38,11 +37,17 @@ public final class SourcepathEntryMacro extends Macro { public String expand(final DataContext dataContext) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); - if (project == null) return null; - VirtualFile file = (VirtualFile)dataContext.getData(DataConstants.VIRTUAL_FILE); - if (file == null) return null; + if (project == null) { + return null; + } + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (file == null) { + return null; + } final VirtualFile sourceRoot = ProjectRootManager.getInstance(project).getFileIndex().getSourceRootForFile(file); - if (sourceRoot == null) return null; + if (sourceRoot == null) { + return null; + } return getPath(sourceRoot); } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java index a93266fcf866..f6543b068f60 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java @@ -286,7 +286,7 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner { private void updateModel() { DataContext context = DataManager.getInstance().getDataContext(); - if (context.getData(DataConstants.IDE_VIEW) == myIdeView || context.getData(DataConstants.PROJECT) != myProject || isNodePopupShowing()) { + if (LangDataKeys.IDE_VIEW.getData(context) == myIdeView || PlatformDataKeys.PROJECT.getData(context) != myProject || isNodePopupShowing()) { scheduleModelUpdate(); return; } @@ -617,10 +617,10 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner { @Nullable public Object getData(String dataId) { - if (dataId.equals(DataConstants.PROJECT)) { + if (PlatformDataKeys.PROJECT.is(dataId)) { return !myProject.isDisposed() ? myProject : null; } - if (dataId.equals(DataConstants.MODULE)) { + if (LangDataKeys.MODULE.is(dataId)) { final Module module = getSelectedElement(Module.class); if (module != null && !module.isDisposed()) return module; final PsiElement element = getSelectedElement(PsiElement.class); @@ -629,7 +629,7 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner { } return null; } - if (dataId.equals(DataConstants.MODULE_CONTEXT)) { + if (LangDataKeys.MODULE_CONTEXT.is(dataId)) { final PsiDirectory directory = getSelectedElement(PsiDirectory.class); if (directory != null) { final VirtualFile dir = directory.getVirtualFile(); @@ -639,17 +639,17 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner { } return null; } - if (dataId.equals(DataConstants.PSI_ELEMENT)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { final PsiElement element = getSelectedElement(PsiElement.class); return element != null && element.isValid() ? element : null; } - if (dataId.equals(DataConstants.PSI_ELEMENT_ARRAY)) { + if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { final PsiElement element = getSelectedElement(PsiElement.class); return element != null && element.isValid() ? new PsiElement[]{element} : null; } - if (dataId.equals(DataConstants.VIRTUAL_FILE_ARRAY)) { - PsiElement[] psiElements = (PsiElement[])getData(DataConstants.PSI_ELEMENT_ARRAY); + if (PlatformDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { + PsiElement[] psiElements = (PsiElement[])getData(LangDataKeys.PSI_ELEMENT_ARRAY.getName()); if (psiElements == null) return null; Set files = new LinkedHashSet(); for (PsiElement element : psiElements) { @@ -660,23 +660,23 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner { return files.size() > 0 ? VfsUtil.toVirtualFileArray(files) : null; } - if (dataId.equals(DataConstants.CONTEXT_COMPONENT)) { + if (PlatformDataKeys.CONTEXT_COMPONENT.is(dataId)) { return this; } - if (DataConstants.CUT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCutProvider(); } - if (DataConstants.COPY_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCopyProvider(); } - if (DataConstants.PASTE_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getPasteProvider(); } - if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { return getSelectedElement(Module.class) != null ? myDeleteModuleProvider : new DeleteHandler.DefaultDeleteProvider(); } - if (DataConstants.IDE_VIEW.equals(dataId)) { + if (LangDataKeys.IDE_VIEW.is(dataId)) { return myIdeView; } diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesOutsideGroupAction.java b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesOutsideGroupAction.java index bd0c4a27972e..da639e23a87e 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesOutsideGroupAction.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesOutsideGroupAction.java @@ -22,8 +22,8 @@ package com.intellij.ide.projectView.actions; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.module.Module; public class MoveModulesOutsideGroupAction extends AnAction { @@ -34,7 +34,7 @@ public class MoveModulesOutsideGroupAction extends AnAction { public void actionPerformed(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); - final Module[] modules = (Module[])dataContext.getData(DataConstants.MODULE_CONTEXT_ARRAY); + final Module[] modules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext); MoveModulesToGroupAction.doMove(modules, null, dataContext); } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesToGroupAction.java b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesToGroupAction.java index cda91de0d205..68616eeedefa 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesToGroupAction.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesToGroupAction.java @@ -24,7 +24,6 @@ import com.intellij.ide.projectView.ProjectView; import com.intellij.ide.projectView.impl.AbstractProjectViewPane; import com.intellij.ide.projectView.impl.ModuleGroup; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.impl.ModuleManagerImpl; @@ -43,7 +42,7 @@ public class MoveModulesToGroupAction extends AnAction { public void update(AnActionEvent e) { Presentation presentation = getTemplatePresentation(); final DataContext dataContext = e.getDataContext(); - final Module[] modules = (Module[])dataContext.getData(DataConstants.MODULE_CONTEXT_ARRAY); + final Module[] modules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext); String description = IdeBundle.message("message.move.modules.to.group", whatToMove(modules), myModuleGroup.presentableText()); presentation.setDescription(description); @@ -55,7 +54,7 @@ public class MoveModulesToGroupAction extends AnAction { public void actionPerformed(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); - final Module[] modules = (Module[])dataContext.getData(DataConstants.MODULE_CONTEXT_ARRAY); + final Module[] modules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext); doMove(modules, myModuleGroup, dataContext); } @@ -63,7 +62,7 @@ public class MoveModulesToGroupAction extends AnAction { Project project = modules[0].getProject(); for (final Module module : modules) { ModifiableModuleModel model = dataContext != null - ? (ModifiableModuleModel)dataContext.getData(DataConstantsEx.MODIFIABLE_MODULE_MODEL) + ? LangDataKeys.MODIFIABLE_MODULE_MODEL.getData(dataContext) : null; if (model != null){ model.setModuleGroupPath(module, group == null ? null : group.getGroupPath()); @@ -86,4 +85,4 @@ public class MoveModulesToGroupAction extends AnAction { } } } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesToSubGroupAction.java b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesToSubGroupAction.java index dd2443ceaf53..d44e47b60329 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesToSubGroupAction.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/actions/MoveModulesToSubGroupAction.java @@ -22,8 +22,8 @@ package com.intellij.ide.projectView.actions; import com.intellij.ide.IdeBundle; import com.intellij.ide.projectView.impl.ModuleGroup; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.module.Module; import com.intellij.openapi.ui.Messages; @@ -42,7 +42,7 @@ public class MoveModulesToSubGroupAction extends MoveModulesToGroupAction { public void actionPerformed(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); - final Module[] modules = (Module[])dataContext.getData(DataConstants.MODULE_CONTEXT_ARRAY); + final Module[] modules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext); final String[] newGroup; if (myModuleGroup != null) { String message = IdeBundle.message("prompt.specify.name.of.module.subgroup", myModuleGroup.presentableText(), whatToMove(modules)); @@ -59,4 +59,4 @@ public class MoveModulesToSubGroupAction extends MoveModulesToGroupAction { doMove(modules, new ModuleGroup(newGroup), dataContext); } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java index 16117dabf43c..ee435d453f58 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java @@ -31,10 +31,10 @@ import com.intellij.ide.projectView.impl.nodes.AbstractProjectNode; import com.intellij.ide.projectView.impl.nodes.ModuleGroupNode; import com.intellij.ide.util.treeView.*; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.actionSystem.DefaultActionGroup; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.ExtensionPointName; @@ -212,7 +212,7 @@ public abstract class AbstractProjectViewPane implements DataProvider, Disposabl } public Object getData(String dataId) { - if (DataConstants.NAVIGATABLE_ARRAY.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE_ARRAY.is(dataId)) { TreePath[] paths = getSelectionPaths(); if (paths == null) return null; final ArrayList navigatables = new ArrayList(); @@ -545,7 +545,7 @@ public abstract class AbstractProjectViewPane implements DataProvider, Disposabl public void dragGestureRecognized(DragGestureEvent dge) { if ((dge.getDragAction() & DnDConstants.ACTION_COPY_OR_MOVE) == 0) return; DataContext dataContext = DataManager.getInstance().getDataContext(); - ProjectView projectView = (ProjectView)dataContext.getData(ProjectViewImpl.PROJECT_VIEW_DATA_CONSTANT); + ProjectView projectView = ProjectViewImpl.DATA_KEY.getData(dataContext); if (projectView == null) return; final AbstractProjectViewPane currentPane = projectView.getCurrentProjectViewPane(); diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ModuleGroup.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ModuleGroup.java index 1429492d9b2f..a3b388180205 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ModuleGroup.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ModuleGroup.java @@ -19,9 +19,10 @@ */ package com.intellij.ide.projectView.impl; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; +import com.intellij.openapi.actionSystem.DataKey; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; @@ -33,6 +34,8 @@ import org.jetbrains.annotations.NotNull; import java.util.*; public class ModuleGroup { + public static final DataKey ARRAY_DATA_KEY = DataKey.create("moduleGroup.array"); + private final String[] myGroupPath; public ModuleGroup(@NotNull String[] groupPath) { @@ -77,8 +80,7 @@ public class ModuleGroup { } public Collection childGroups(DataContext dataContext) { - return childGroups((ModifiableModuleModel)dataContext.getData(DataConstantsEx.MODIFIABLE_MODULE_MODEL), - (Project)dataContext.getData(DataConstants.PROJECT)); + return childGroups(LangDataKeys.MODIFIABLE_MODULE_MODEL.getData(dataContext), PlatformDataKeys.PROJECT.getData(dataContext)); } public Collection childGroups(ModifiableModuleModel model, Project project) { diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveDropTargetListener.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveDropTargetListener.java index 72dd63f40d3a..dda8641229a5 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveDropTargetListener.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveDropTargetListener.java @@ -19,7 +19,7 @@ package com.intellij.ide.projectView.impl; import com.intellij.ide.DataManager; import com.intellij.ide.projectView.impl.nodes.DropTargetNode; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; @@ -311,7 +311,7 @@ class MoveDropTargetListener implements DropTargetListener { getActionHandler(dataContext).invoke(myProject, sourceElements, new DataContext() { @Nullable public Object getData(@NonNls String dataId) { - if (dataId.equals(DataConstantsEx.TARGET_PSI_ELEMENT)) { + if (LangDataKeys.TARGET_PSI_ELEMENT.is(dataId)) { return targetElement; } else { @@ -322,7 +322,7 @@ class MoveDropTargetListener implements DropTargetListener { } private RefactoringActionHandler getActionHandler(final DataContext dataContext) { - final MoveAction.MoveProvider moveProvider = (MoveAction.MoveProvider)dataContext.getData(MoveAction.MOVE_PROVIDER); + final MoveAction.MoveProvider moveProvider = MoveAction.MoveProvider.DATA_KEY.getData(dataContext); if (moveProvider != null) { return moveProvider.getHandler(dataContext); } diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveModuleToGroup.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveModuleToGroup.java index eff896acedd5..70752bf5c459 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveModuleToGroup.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveModuleToGroup.java @@ -25,6 +25,7 @@ import com.intellij.ide.projectView.actions.MoveModulesToSubGroupAction; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -42,16 +43,17 @@ public class MoveModuleToGroup extends ActionGroup { public void update(AnActionEvent e){ final DataContext dataContext = e.getDataContext(); - final Project project = (Project)dataContext.getData(DataConstants.PROJECT); - final Module[] modules = (Module[])dataContext.getData(DataConstants.MODULE_CONTEXT_ARRAY); + final Project project = PlatformDataKeys.PROJECT.getData(dataContext); + final Module[] modules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext); boolean active = project != null && modules != null && modules.length != 0; final Presentation presentation = e.getPresentation(); presentation.setVisible(active); presentation.setText(myModuleGroup.presentableText()); } + @NotNull public AnAction[] getChildren(@Nullable AnActionEvent e) { - if (e == null) return AnAction.EMPTY_ARRAY; + if (e == null) return EMPTY_ARRAY; List children = new ArrayList(myModuleGroup.childGroups(e.getDataContext())); Collections.sort ( children, new Comparator() { diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveModuleToGroupTopLevel.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveModuleToGroupTopLevel.java index 6377e583e3f7..3b529b5d33af 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveModuleToGroupTopLevel.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/MoveModuleToGroupTopLevel.java @@ -22,11 +22,11 @@ package com.intellij.ide.projectView.impl; import com.intellij.ide.projectView.actions.MoveModulesOutsideGroupAction; import com.intellij.ide.projectView.actions.MoveModulesToSubGroupAction; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -34,14 +34,17 @@ import java.util.*; public class MoveModuleToGroupTopLevel extends ActionGroup { public void update(AnActionEvent e){ final DataContext dataContext = e.getDataContext(); - final Project project = (Project)dataContext.getData(DataConstants.PROJECT); - final Module[] modules = (Module[])dataContext.getData(DataConstants.MODULE_CONTEXT_ARRAY); + final Project project = PlatformDataKeys.PROJECT.getData(dataContext); + final Module[] modules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext); boolean active = project != null && modules != null && modules.length != 0; e.getPresentation().setVisible(active); } + @NotNull public AnAction[] getChildren(@Nullable AnActionEvent e) { - if (e == null) return AnAction.EMPTY_ARRAY; + if (e == null) { + return EMPTY_ARRAY; + } List topLevelGroupNames = new ArrayList (getTopLevelGroupNames(e.getDataContext())); Collections.sort ( topLevelGroupNames ); @@ -56,9 +59,9 @@ public class MoveModuleToGroupTopLevel extends ActionGroup { } private static Collection getTopLevelGroupNames(final DataContext dataContext) { - final Project project = (Project)dataContext.getData(DataConstants.PROJECT); + final Project project =PlatformDataKeys.PROJECT.getData(dataContext); - final ModifiableModuleModel model = (ModifiableModuleModel)dataContext.getData(DataConstantsEx.MODIFIABLE_MODULE_MODEL); + final ModifiableModuleModel model = LangDataKeys.MODIFIABLE_MODULE_MODEL.getData(dataContext); Module[] allModules; if ( model != null ) { @@ -81,4 +84,4 @@ public class MoveModuleToGroupTopLevel extends ActionGroup { } return topLevelGroupNames; } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java index 18f27794c287..2ae075af88a4 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewImpl.java @@ -36,7 +36,6 @@ import com.intellij.ide.util.treeView.AbstractTreeNode; import com.intellij.ide.util.treeView.NodeDescriptor; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.actionSystem.ex.DataConstantsEx; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.application.ex.ApplicationInfoEx; @@ -156,7 +155,9 @@ public final class ProjectViewImpl extends ProjectView implements PersistentStat private final Map myId2Pane = new LinkedHashMap(); private final Collection myUninitializedPanes = new THashSet(); - static final String PROJECT_VIEW_DATA_CONSTANT = "com.intellij.ide.projectView.impl.ProjectViewImpl"; + static final DataKey DATA_KEY = DataKey.create("com.intellij.ide.projectView.impl.ProjectViewImpl"); + @Deprecated static final String PROJECT_VIEW_DATA_CONSTANT = DATA_KEY.getName(); + private DefaultActionGroup myActionGroup; private final Runnable myTreeChangeListener; private String mySavedPaneId = ProjectViewPane.ID; @@ -755,7 +756,7 @@ public final class ProjectViewImpl extends ProjectView implements PersistentStat } } if (title == null) { - final PsiElement element = (PsiElement)myDataProvider.getData(DataConstants.PSI_ELEMENT); + final PsiElement element = (PsiElement)myDataProvider.getData(LangDataKeys.PSI_ELEMENT.getName()); if (element != null) { PsiFile file = element.getContainingFile(); if (file != null) { @@ -977,20 +978,20 @@ public final class ProjectViewImpl extends ProjectView implements PersistentStat if (paneSpecificData != null) return paneSpecificData; } - if (DataConstants.PSI_ELEMENT.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { if (currentProjectViewPane == null) return null; final PsiElement[] elements = currentProjectViewPane.getSelectedPSIElements(); return elements.length == 1 ? elements[0] : null; } - if (DataConstants.PSI_ELEMENT_ARRAY.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { if (currentProjectViewPane == null) { return null; } PsiElement[] elements = currentProjectViewPane.getSelectedPSIElements(); return elements.length == 0 ? null : elements; } - if (DataConstants.VIRTUAL_FILE_ARRAY.equals(dataId)) { - PsiElement[] psiElements = (PsiElement[])getData(DataConstants.PSI_ELEMENT_ARRAY); + if (PlatformDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { + PsiElement[] psiElements = (PsiElement[])getData(LangDataKeys.PSI_ELEMENT_ARRAY.getName()); if (psiElements == null) return null; Set files = new LinkedHashSet(); for (PsiElement element : psiElements) { @@ -1000,22 +1001,22 @@ public final class ProjectViewImpl extends ProjectView implements PersistentStat } return files.size() > 0 ? VfsUtil.toVirtualFileArray(files) : null; } - if (DataConstantsEx.TARGET_PSI_ELEMENT.equals(dataId)) { + if (LangDataKeys.TARGET_PSI_ELEMENT.is(dataId)) { return null; } - if (DataConstants.CUT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCutProvider(); } - if (DataConstants.COPY_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCopyProvider(); } - if (DataConstants.PASTE_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getPasteProvider(); } - if (DataConstants.IDE_VIEW.equals(dataId)) { + if (LangDataKeys.IDE_VIEW.is(dataId)) { return myIdeView; } - if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { final List modules = getSelectedElements(Module.class); if (!modules.isEmpty()) { return myDeleteModuleProvider; @@ -1034,17 +1035,17 @@ public final class ProjectViewImpl extends ProjectView implements PersistentStat } return myDeletePSIElementProvider; } - if (DataConstants.HELP_ID.equals(dataId)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return HelpID.PROJECT_VIEWS; } - if (PROJECT_VIEW_DATA_CONSTANT.equals(dataId)) { + if (ProjectViewImpl.DATA_KEY.is(dataId)) { return ProjectViewImpl.this; } - if (DataConstants.PROJECT_CONTEXT.equals(dataId)) { + if (PlatformDataKeys.PROJECT_CONTEXT.is(dataId)) { Object selected = getSelectedNodeElement(); return selected instanceof Project ? selected : null; } - if (DataConstants.MODULE_CONTEXT.equals(dataId)) { + if (LangDataKeys.MODULE_CONTEXT.is(dataId)) { Object selected = getSelectedNodeElement(); if (selected instanceof Module) { return !((Module)selected).isDisposed() ? selected : null; @@ -1060,18 +1061,18 @@ public final class ProjectViewImpl extends ProjectView implements PersistentStat } } - if (DataConstants.MODULE_CONTEXT_ARRAY.equals(dataId)) { + if (LangDataKeys.MODULE_CONTEXT_ARRAY.is(dataId)) { return getSelectedModules(); } - if (DataConstantsEx.MODULE_GROUP_ARRAY.equals(dataId)) { + if (ModuleGroup.ARRAY_DATA_KEY.is(dataId)) { final List selectedElements = getSelectedElements(ModuleGroup.class); return selectedElements.isEmpty() ? null : selectedElements.toArray(new ModuleGroup[selectedElements.size()]); } - if (DataConstantsEx.LIBRARY_GROUP_ARRAY.equals(dataId)) { + if (LibraryGroupElement.ARRAY_DATA_KEY.is(dataId)) { final List selectedElements = getSelectedElements(LibraryGroupElement.class); return selectedElements.isEmpty() ? null : selectedElements.toArray(new LibraryGroupElement[selectedElements.size()]); } - if (DataConstantsEx.NAMED_LIBRARY_ARRAY.equals(dataId)) { + if (NamedLibraryElement.ARRAY_DATA_KEY.is(dataId)) { final List selectedElements = getSelectedElements(NamedLibraryElement.class); return selectedElements.isEmpty() ? null : selectedElements.toArray(new NamedLibraryElement[selectedElements.size()]); } diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/LibraryGroupElement.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/LibraryGroupElement.java index 6e8b415c8118..23331c1e5702 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/LibraryGroupElement.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/LibraryGroupElement.java @@ -16,6 +16,7 @@ package com.intellij.ide.projectView.impl.nodes; +import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.module.Module; /** @@ -24,6 +25,8 @@ import com.intellij.openapi.module.Module; * Time: 7:08:03 PM */ public final class LibraryGroupElement { + public static final DataKey ARRAY_DATA_KEY = DataKey.create("libraryGroup.array"); + private final Module myModule; public LibraryGroupElement(Module module) { diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/NamedLibraryElement.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/NamedLibraryElement.java index c95d5ef98d75..f315552d32cf 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/NamedLibraryElement.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/NamedLibraryElement.java @@ -16,6 +16,7 @@ package com.intellij.ide.projectView.impl.nodes; +import com.intellij.openapi.actionSystem.DataKey; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.OrderEntry; import com.intellij.openapi.util.Comparing; @@ -26,6 +27,8 @@ import com.intellij.openapi.util.Comparing; * Time: 7:08:30 PM */ public final class NamedLibraryElement { + public static final DataKey ARRAY_DATA_KEY = DataKey.create("namedLibrary.array"); + private final Module myContextModule; private final OrderEntry myEntry; diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java index 33d283c8da7d..84474567797c 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java @@ -34,8 +34,9 @@ import com.intellij.ide.util.DeleteHandler; import com.intellij.ide.util.DirectoryChooserUtil; import com.intellij.ide.util.EditorHelper; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.colors.CodeInsightColors; @@ -230,7 +231,7 @@ public class ScopeTreeViewPanel extends JPanel implements JDOMExternalizable, Di settings.UI_COMPACT_EMPTY_MIDDLE_PACKAGES = projectView.isHideEmptyMiddlePackages(ScopeViewPane.ID); myBuilder = new FileTreeModelBuilder(myProject, new Marker() { public boolean isMarked(PsiFile file) { - return packageSet.contains(file, holder); + return packageSet != null && packageSet.contains(file, holder); } }, settings); myTree.setModel(myBuilder.build(myProject, showProgress, projectView.isSortByType(ScopeViewPane.ID))); @@ -258,7 +259,7 @@ public class ScopeTreeViewPanel extends JPanel implements JDOMExternalizable, Di @Nullable public Object getData(String dataId) { - if (dataId.equals(DataConstants.MODULE_CONTEXT)) { + if (LangDataKeys.MODULE_CONTEXT.is(dataId)) { final TreePath selectionPath = myTree.getSelectionPath(); if (selectionPath != null) { PackageDependenciesNode node = (PackageDependenciesNode)selectionPath.getLastPathComponent(); @@ -267,7 +268,7 @@ public class ScopeTreeViewPanel extends JPanel implements JDOMExternalizable, Di } } } - if (dataId.equals(DataConstants.PSI_ELEMENT)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { final TreePath selectionPath = myTree.getSelectionPath(); if (selectionPath != null) { PackageDependenciesNode node = (PackageDependenciesNode)selectionPath.getLastPathComponent(); @@ -276,7 +277,7 @@ public class ScopeTreeViewPanel extends JPanel implements JDOMExternalizable, Di } final TreePath[] treePaths = myTree.getSelectionPaths(); if (treePaths != null) { - if (dataId.equals(DataConstants.PSI_ELEMENT_ARRAY)) { + if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { Set psiElements = new HashSet(); for (TreePath treePath : treePaths) { final PackageDependenciesNode node = (PackageDependenciesNode)treePath.getLastPathComponent(); @@ -290,19 +291,19 @@ public class ScopeTreeViewPanel extends JPanel implements JDOMExternalizable, Di return psiElements.isEmpty() ? null : psiElements.toArray(new PsiElement[psiElements.size()]); } } - if (dataId.equals(DataConstants.IDE_VIEW)) { + if (LangDataKeys.IDE_VIEW.is(dataId)) { return myIdeView; } - if (DataConstants.CUT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCutProvider(); } - if (DataConstants.COPY_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCopyProvider(); } - if (DataConstants.PASTE_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getPasteProvider(); } - if (DataConstants.DELETE_ELEMENT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) { if (getSelectedModules() != null) { return myDeleteModuleProvider; } @@ -372,7 +373,7 @@ public class ScopeTreeViewPanel extends JPanel implements JDOMExternalizable, Di setIcon(node.getClosedIcon()); } } - catch (IndexNotReadyException e) { + catch (IndexNotReadyException ignore) { } final SimpleTextAttributes regularAttributes = SimpleTextAttributes.REGULAR_ATTRIBUTES; TextAttributes textAttributes = regularAttributes.toTextAttributes(); diff --git a/platform/lang-impl/src/com/intellij/ide/structureView/StructureViewWrapper.java b/platform/lang-impl/src/com/intellij/ide/structureView/StructureViewWrapper.java index 78bdb6f9288b..17edcf03b9e1 100644 --- a/platform/lang-impl/src/com/intellij/ide/structureView/StructureViewWrapper.java +++ b/platform/lang-impl/src/com/intellij/ide/structureView/StructureViewWrapper.java @@ -20,11 +20,7 @@ import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.vfs.VirtualFile; /** - * Created by IntelliJ IDEA. - * User: lesya - * Date: Feb 23, 2005 - * Time: 7:19:02 PM - * To change this template use File | Settings | File Templates. + * @author lesya */ public interface StructureViewWrapper { boolean selectCurrentElement(FileEditor fileEditor, VirtualFile file, boolean requestFocus); diff --git a/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java b/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java index dd41672744ea..b524239f198f 100644 --- a/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java +++ b/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewComponent.java @@ -657,7 +657,7 @@ public class StructureViewComponent extends SimpleToolWindowPanel implements Tre } public Object getData(String dataId) { - if (DataConstants.PSI_ELEMENT.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { TreePath path = getSelectedUniquePath(); if (path == null) return null; DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent(); @@ -672,29 +672,29 @@ public class StructureViewComponent extends SimpleToolWindowPanel implements Tre if (!((PsiElement)element).isValid()) return null; return element; } - if (DataConstants.PSI_ELEMENT_ARRAY.equals(dataId)) { + if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { return convertToPsiElementsArray(getSelectedElements()); } - if (DataConstants.FILE_EDITOR.equals(dataId)) { + if (PlatformDataKeys.FILE_EDITOR.is(dataId)) { return myFileEditor; } - if (DataConstants.CUT_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCutProvider(); } - if (DataConstants.COPY_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getCopyProvider(); } - if (DataConstants.PASTE_PROVIDER.equals(dataId)) { + if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) { return myCopyPasteDelegator.getPasteProvider(); } - if (DataConstants.NAVIGATABLE.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { Object[] selectedElements = getSelectedTreeElements(); if (selectedElements == null || selectedElements.length == 0) return null; if (selectedElements[0] instanceof Navigatable) { return selectedElements[0]; } } - if (DataConstants.HELP_ID.equals(dataId)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return getHelpID(); } return null; diff --git a/platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java b/platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java index 6d271e1d72c0..b778441ef42f 100644 --- a/platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/todo/TodoPanel.java @@ -282,7 +282,7 @@ abstract class TodoPanel extends SimpleToolWindowPanel implements OccurenceNavig } public Object getData(String dataId) { - if (DataConstants.NAVIGATABLE.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { TreePath path = myTree.getSelectionPath(); if (path == null) { return null; @@ -306,14 +306,14 @@ abstract class TodoPanel extends SimpleToolWindowPanel implements OccurenceNavig return null; } } - else if (DataConstants.VIRTUAL_FILE.equals(dataId)) { + else if (PlatformDataKeys.VIRTUAL_FILE.is(dataId)) { final PsiFile file = getSelectedFile(); return file != null ? file.getVirtualFile() : null; } - else if (DataConstants.PSI_ELEMENT.equals(dataId)) { + else if (LangDataKeys.PSI_ELEMENT.is(dataId)) { return getSelectedElement(); } - else if (DataConstants.VIRTUAL_FILE_ARRAY.equals(dataId)) { + else if (PlatformDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) { PsiFile file = getSelectedFile(); if (file != null) { return new VirtualFile[]{file.getVirtualFile()}; @@ -322,7 +322,7 @@ abstract class TodoPanel extends SimpleToolWindowPanel implements OccurenceNavig return VirtualFile.EMPTY_ARRAY; } } - else if (DataConstants.HELP_ID.equals(dataId)) { + else if (PlatformDataKeys.HELP_ID.is(dataId)) { //noinspection HardCodedStringLiteral return "find.todoList"; } diff --git a/platform/lang-impl/src/com/intellij/ide/util/DeleteHandler.java b/platform/lang-impl/src/com/intellij/ide/util/DeleteHandler.java index bc6793aa0b51..f40c7bd3b437 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/DeleteHandler.java +++ b/platform/lang-impl/src/com/intellij/ide/util/DeleteHandler.java @@ -22,8 +22,8 @@ import com.intellij.history.LocalHistoryAction; import com.intellij.ide.DataManager; import com.intellij.ide.DeleteProvider; import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; @@ -51,23 +51,28 @@ import java.util.ArrayList; import java.util.Arrays; public class DeleteHandler { + private DeleteHandler() { + } + public static class DefaultDeleteProvider implements DeleteProvider { public boolean canDeleteElement(DataContext dataContext) { - if (dataContext.getData(DataConstants.PROJECT) == null) return false; + if (PlatformDataKeys.PROJECT.getData(dataContext) == null) { + return false; + } final PsiElement[] elements = getPsiElements(dataContext); - return elements != null && DeleteHandler.shouldEnableDeleteAction(elements); + return elements != null && shouldEnableDeleteAction(elements); } @Nullable - private PsiElement[] getPsiElements(DataContext dataContext) { - PsiElement[] elements = (PsiElement[])dataContext.getData(DataConstants.PSI_ELEMENT_ARRAY); + private static PsiElement[] getPsiElements(DataContext dataContext) { + PsiElement[] elements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext); if (elements == null) { - final Object data = dataContext.getData(DataConstants.PSI_ELEMENT); + final Object data = LangDataKeys.PSI_ELEMENT.getData(dataContext); if (data != null) { elements = new PsiElement[]{(PsiElement)data}; } else { - final Object data1 = dataContext.getData(DataConstants.PSI_FILE); + final Object data1 = LangDataKeys.PSI_FILE.getData(dataContext); if (data1 != null) { elements = new PsiElement[]{(PsiFile)data1}; } diff --git a/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java b/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java index a202dc7125fe..7d8d9e16f075 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java @@ -50,8 +50,8 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiUtilBase; import com.intellij.ui.ListScrollingUtil; import com.intellij.ui.SpeedSearchBase; -import com.intellij.util.containers.HashSet; import com.intellij.util.ArrayUtil; +import com.intellij.util.containers.HashSet; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -337,7 +337,7 @@ public class FileStructureDialog extends DialogWrapper { if (selectedElement instanceof TreeElement) selectedElement = ((StructureViewTreeElement)selectedElement).getValue(); - if (DataConstants.NAVIGATABLE.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { return selectedElement instanceof Navigatable ? selectedElement : myNavigatable; } diff --git a/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java b/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java index 3cf8e5eaaf61..e283c158399f 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java @@ -19,8 +19,8 @@ import com.intellij.ide.ui.UISettings; import com.intellij.ide.util.treeView.NodeRenderer; import com.intellij.navigation.ItemPresentation; import com.intellij.navigation.NavigationItem; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.markup.EffectType; @@ -97,8 +97,9 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe .isProblemFile(PsiUtilBase.getVirtualFile((PsiElement)element)); if (element instanceof PsiElement || element instanceof DataProvider) { - final PsiElement psiElement = element instanceof PsiElement ? (PsiElement)element : (PsiElement) ((DataProvider)element).getData( - DataConstants.PSI_ELEMENT); + final PsiElement psiElement = element instanceof PsiElement + ? (PsiElement)element + : LangDataKeys.PSI_ELEMENT.getData((DataProvider) element); if (psiElement != null) { final Project project = psiElement.getProject(); diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java index 99ded366c539..68a673718b5c 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java @@ -16,6 +16,7 @@ package com.intellij.ide.util.gotoByName; +import com.intellij.Patches; import com.intellij.ide.IdeBundle; import com.intellij.ide.actions.CopyReferenceAction; import com.intellij.ide.ui.UISettings; @@ -164,13 +165,13 @@ public abstract class ChooseByNameBase{ } public Object getData(String dataId) { - if (dataId.equals(DataConstants.HELP_ID)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return myModel.getHelpId(); } if (!myListIsUpToDate) { return null; } - if (dataId.equals(DataConstants.PSI_ELEMENT)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { Object element = getChosenElement(); if (element instanceof PsiElement) { @@ -181,7 +182,7 @@ public abstract class ChooseByNameBase{ return ((DataProvider)element).getData(dataId); } } - else if (dataId.equals(DataConstants.PSI_ELEMENT_ARRAY)) { + else if (LangDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) { final List chosenElements = getChosenElements(); if (chosenElements != null) { List result = new ArrayList(); @@ -193,7 +194,7 @@ public abstract class ChooseByNameBase{ return result.toArray(new PsiElement[result.size()]); } } - else if (dataId.equals(DataConstants.DOMINANT_HINT_AREA_RECTANGLE)) { + else if (PlatformDataKeys.DOMINANT_HINT_AREA_RECTANGLE.is(dataId)) { return getBounds(); } return null; @@ -470,7 +471,7 @@ public abstract class ChooseByNameBase{ if (element instanceof PsiElement) { myTextFieldPanel.updateHint((PsiElement)element); } else if (element instanceof DataProvider) { - final Object o = ((DataProvider)element).getData(DataConstants.PSI_ELEMENT); + final Object o = ((DataProvider)element).getData(LangDataKeys.PSI_ELEMENT.getName()); if (o instanceof PsiElement) { myTextFieldPanel.updateHint((PsiElement)o); } @@ -965,7 +966,14 @@ public abstract class ChooseByNameBase{ } return; } - super.processKeyEvent(e); + try { + super.processKeyEvent(e); + } + catch (NullPointerException e1) { + if (!Patches.SUN_BUG_6322854) { + throw e1; + } + } } private void fillInCommonPrefix(final String pattern) { diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoFileModel.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoFileModel.java index bd0a6194bd77..b0f23436c123 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoFileModel.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoFileModel.java @@ -70,7 +70,15 @@ public class GotoFileModel extends ContributorsBasedGotoByModel{ if (item instanceof PsiFile) { final PsiFile file = (PsiFile)item; final Set types = getFileTypes(); - return types == null || types.contains(file.getFileType()); + // if language substitutors are used, PsiFile.getFileType() can be different from + // PsiFile.getVirtualFile().getFileType() + if (types != null) { + if (types.contains(file.getFileType())) return true; + VirtualFile vFile = file.getVirtualFile(); + if (vFile != null && types.contains(vFile.getFileType())) return true; + return false; + } + return true; } else { return super.acceptItem(item); diff --git a/platform/lang-impl/src/com/intellij/internal/psiView/ViewerAction.java b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerAction.java similarity index 71% rename from platform/lang-impl/src/com/intellij/internal/psiView/ViewerAction.java rename to platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerAction.java index 1c72b2160de4..e232265e7fb1 100644 --- a/platform/lang-impl/src/com/intellij/internal/psiView/ViewerAction.java +++ b/platform/lang-impl/src/com/intellij/internal/psiView/PsiViewerAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2010 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,12 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -/** - * class ViewerAction - * created Aug 27, 2001 - * @author Jeka - */ package com.intellij.internal.psiView; import com.intellij.openapi.actionSystem.AnAction; @@ -27,16 +21,18 @@ import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; -public class ViewerAction extends AnAction implements DumbAware { +/** + * @author Konstantin Bulenkov + */ +public class PsiViewerAction extends AnAction implements DumbAware { public void actionPerformed(AnActionEvent e) { - Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); - PsiViewerDialog dialog = new PsiViewerDialog(project,false); - dialog.show(); + final Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); + new PsiViewerDialog(project, false).show(); } @Override public void update(AnActionEvent e) { - Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); + final Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext()); e.getPresentation().setEnabled(project != null); } } diff --git a/platform/lang-impl/src/com/intellij/lang/LangBundle.java b/platform/lang-impl/src/com/intellij/lang/LangBundle.java index 3dc2b2aecbf6..ceab51505f01 100644 --- a/platform/lang-impl/src/com/intellij/lang/LangBundle.java +++ b/platform/lang-impl/src/com/intellij/lang/LangBundle.java @@ -25,11 +25,7 @@ import java.lang.ref.SoftReference; import java.util.ResourceBundle; /** - * Created by IntelliJ IDEA. - * User: yole - * Date: 12.09.2005 - * Time: 18:03:21 - * To change this template use File | Settings | File Templates. + * @author yole */ public class LangBundle { private static Reference ourBundle; diff --git a/platform/lang-impl/src/com/intellij/moduleDependencies/ModulesDependenciesPanel.java b/platform/lang-impl/src/com/intellij/moduleDependencies/ModulesDependenciesPanel.java index 38557bac2fac..8a622b3883fb 100644 --- a/platform/lang-impl/src/com/intellij/moduleDependencies/ModulesDependenciesPanel.java +++ b/platform/lang-impl/src/com/intellij/moduleDependencies/ModulesDependenciesPanel.java @@ -36,8 +36,8 @@ import com.intellij.openapi.roots.ModuleRootListener; import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.util.IconLoader; import com.intellij.ui.*; -import com.intellij.ui.treeStructure.Tree; import com.intellij.ui.content.Content; +import com.intellij.ui.treeStructure.Tree; import com.intellij.util.containers.HashMap; import com.intellij.util.graph.DFSTBuilder; import com.intellij.util.graph.Graph; @@ -451,10 +451,10 @@ public class ModulesDependenciesPanel extends JPanel implements ModuleRootListen } public Object getData(String dataId) { - if (DataConstants.PROJECT.equals(dataId)){ + if (PlatformDataKeys.PROJECT.is(dataId)){ return myProject; } - if (DataConstants.MODULE_CONTEXT.equals(dataId)){ + if (LangDataKeys.MODULE_CONTEXT.is(dataId)){ final TreePath selectionPath = myTree.getLeadSelectionPath(); if (selectionPath != null && selectionPath.getLastPathComponent() instanceof DefaultMutableTreeNode){ DefaultMutableTreeNode node = (DefaultMutableTreeNode)selectionPath.getLastPathComponent(); @@ -463,8 +463,8 @@ public class ModulesDependenciesPanel extends JPanel implements ModuleRootListen } } } - if (DataConstants.HELP_ID.equals(dataId)) { - return ModulesDependenciesPanel.ourHelpID; + if (PlatformDataKeys.HELP_ID.is(dataId)) { + return ourHelpID; } return null; } diff --git a/platform/lang-impl/src/com/intellij/moduleDependencies/ShowModuleDependenciesAction.java b/platform/lang-impl/src/com/intellij/moduleDependencies/ShowModuleDependenciesAction.java index d8f10e85681e..5e7fc4a2806c 100644 --- a/platform/lang-impl/src/com/intellij/moduleDependencies/ShowModuleDependenciesAction.java +++ b/platform/lang-impl/src/com/intellij/moduleDependencies/ShowModuleDependenciesAction.java @@ -45,12 +45,12 @@ public class ShowModuleDependenciesAction extends AnAction{ } ModulesDependenciesPanel panel; AnalysisScope scope = new AnalysisScope(project); - final Module[] modules = (Module[])dataContext.getData(DataConstants.MODULE_CONTEXT_ARRAY); + final Module[] modules = LangDataKeys.MODULE_CONTEXT_ARRAY.getData(dataContext); if (modules != null){ panel = new ModulesDependenciesPanel(project, modules); scope = new AnalysisScope(modules); } else { - final PsiElement element = (PsiElement)dataContext.getData(DataConstants.PSI_FILE); + final PsiElement element = LangDataKeys.PSI_FILE.getData(dataContext); final Module module = element != null ? ModuleUtil.findModuleForPsiElement(element) : null; if (module != null && ModuleManager.getInstance(project).getModules().length > 1){ MyModuleOrProjectScope dlg = new MyModuleOrProjectScope(module.getName()); diff --git a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/http/JumpFromRemoteFileToLocalAction.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/http/JumpFromRemoteFileToLocalAction.java new file mode 100644 index 000000000000..c1a5969a8f11 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/http/JumpFromRemoteFileToLocalAction.java @@ -0,0 +1,102 @@ +/* + * Copyright 2000-2009 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.fileEditor.impl.http; + +import com.intellij.CommonBundle; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.fileEditor.OpenFileDescriptor; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ui.util.CellAppearanceUtils; +import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.ui.popup.PopupChooserBuilder; +import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.impl.http.HttpVirtualFile; +import com.intellij.openapi.vfs.impl.http.RemoteFileState; +import com.intellij.psi.search.FilenameIndex; +import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.ui.ColoredListCellRenderer; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; +import java.util.Collection; + +/** + * @author nik + */ +public class JumpFromRemoteFileToLocalAction extends AnAction { + private HttpVirtualFile myFile; + private final Project myProject; + + public JumpFromRemoteFileToLocalAction(HttpVirtualFile file, Project project) { + super("Find Local File", "", IconLoader.findIcon("/general/autoscrollToSource.png")); + myFile = file; + myProject = project; + } + + @Override + public void update(AnActionEvent e) { + final RemoteFileState state = myFile.getFileInfo().getState(); + e.getPresentation().setEnabled(state == RemoteFileState.DOWNLOADED); + } + + @Override + public void actionPerformed(AnActionEvent e) { + final String url = myFile.getUrl(); + for (LocalFileFinder finder : LocalFileFinder.EP_NAME.getExtensions()) { + final VirtualFile file = finder.findLocalFile(url, myProject); + if (file != null) { + navigateToFile(myProject, file); + } + } + + final Collection files = + FilenameIndex.getVirtualFilesByName(myProject, myFile.getName(), GlobalSearchScope.allScope(myProject)); + if (files.isEmpty()) { + Messages.showErrorDialog(myProject, "Cannot find local file for '" + url + "'", CommonBundle.getErrorTitle()); + return; + } + + if (files.size() == 1) { + navigateToFile(myProject, ContainerUtil.getFirstItem(files, null)); + } + else { + final JList list = new JList(files.toArray(new VirtualFile[files.size()])); + list.setCellRenderer(new ColoredListCellRenderer() { + @Override + protected void customizeCellRenderer(JList list, Object value, int index, boolean selected, boolean hasFocus) { + CellAppearanceUtils.forVirtualFile((VirtualFile)value).customize(this); + } + }); + new PopupChooserBuilder(list) + .setTitle("Select Target File") + .setMovable(true) + .setItemChoosenCallback(new Runnable() { + public void run() { + for (Object value : list.getSelectedValues()) { + navigateToFile(myProject, (VirtualFile)value); + } + } + }).createPopup().showUnderneathOf(e.getInputEvent().getComponent()); + } + } + + private static void navigateToFile(Project project, @NotNull VirtualFile file) { + new OpenFileDescriptor(project, file).navigate(true); + } +} diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ProjectFilePathMacro.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/http/LangRemoteFileEditorActionProvider.java similarity index 51% rename from platform/lang-impl/src/com/intellij/ide/macro/ProjectFilePathMacro.java rename to platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/http/LangRemoteFileEditorActionProvider.java index bd5e58600f6a..766c6e2563bb 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/ProjectFilePathMacro.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/http/LangRemoteFileEditorActionProvider.java @@ -13,23 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package com.intellij.openapi.fileEditor.impl.http; -package com.intellij.ide.macro; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.impl.http.HttpVirtualFile; +import org.jetbrains.annotations.NotNull; -import com.intellij.ide.DataAccessors; -import com.intellij.ide.IdeBundle; -import com.intellij.openapi.actionSystem.DataContext; - -public final class ProjectFilePathMacro extends Macro { - public String getName() { - return "ProjectFilePath"; +/** + * @author nik + */ +public class LangRemoteFileEditorActionProvider extends RemoteFileEditorActionProvider { + @NotNull + @Override + public AnAction[] createToolbarActions(@NotNull Project project, @NotNull HttpVirtualFile file) { + return new AnAction[] {new JumpFromRemoteFileToLocalAction(file, project)}; } - - public String getDescription() { - return IdeBundle.message("macro.project.file.path"); - } - - public String expand(DataContext dataContext) { - return DataAccessors.PROJECT_FILE_PATH.from(dataContext); - } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/PsiAwareTextEditorImpl.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/PsiAwareTextEditorImpl.java index 97f62e5156e1..62c7b2a93c88 100644 --- a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/PsiAwareTextEditorImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/PsiAwareTextEditorImpl.java @@ -24,7 +24,8 @@ import com.intellij.codeInsight.daemon.impl.TextEditorBackgroundHighlighter; import com.intellij.codeInsight.folding.CodeFoldingManager; import com.intellij.codeInsight.lookup.LookupManager; import com.intellij.codeInsight.lookup.impl.LookupImpl; -import com.intellij.openapi.actionSystem.DataConstants; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; @@ -71,13 +72,13 @@ public class PsiAwareTextEditorImpl extends TextEditorImpl { } public Object getData(final String dataId) { - if (DataConstants.DOMINANT_HINT_AREA_RECTANGLE.equals(dataId)) { + if (PlatformDataKeys.DOMINANT_HINT_AREA_RECTANGLE.is(dataId)) { final LookupImpl lookup = (LookupImpl)LookupManager.getInstance(myProject).getActiveLookup(); if (lookup != null && lookup.isVisible()) { return lookup.getBounds(); } } - if (DataConstants.MODULE.equals(dataId)) { + if (LangDataKeys.MODULE.is(dataId)) { return ModuleUtil.findModuleForFile(myFile, myProject); } return super.getData(dataId); diff --git a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorPsiDataProvider.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorPsiDataProvider.java index 3f741c3cbd85..ef263c58b789 100644 --- a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorPsiDataProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/TextEditorPsiDataProvider.java @@ -21,12 +21,13 @@ import com.intellij.ide.IdeView; import com.intellij.ide.util.EditorHelper; import com.intellij.lang.Language; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.SelectionModel; import com.intellij.openapi.fileEditor.EditorDataProvider; import com.intellij.openapi.project.IndexNotReadyException; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.psi.*; @@ -39,7 +40,7 @@ public class TextEditorPsiDataProvider implements EditorDataProvider { public Object getData(final String dataId, final Editor e, final VirtualFile file) { if (!file.isValid()) return null; - if (dataId.equals(AnActionEvent.injectedId(DataConstants.EDITOR))) { + if (dataId.equals(AnActionEvent.injectedId(PlatformDataKeys.EDITOR.getName()))) { if (PsiDocumentManager.getInstance(e.getProject()).isUncommited(e.getDocument())) { return e; } @@ -47,34 +48,40 @@ public class TextEditorPsiDataProvider implements EditorDataProvider { return InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(e, getPsiFile(e, file)); } } - if (dataId.equals(AnActionEvent.injectedId(DataConstants.PSI_ELEMENT))) { - return getPsiElementIn((Editor)getData(AnActionEvent.injectedId(DataConstants.EDITOR), e, file), file); + if (dataId.equals(AnActionEvent.injectedId(LangDataKeys.PSI_ELEMENT.getName()))) { + return getPsiElementIn((Editor)getData(AnActionEvent.injectedId(PlatformDataKeys.EDITOR.getName()), e, file), file); } - if (DataConstants.PSI_ELEMENT.equals(dataId)){ + if (LangDataKeys.PSI_ELEMENT.is(dataId)){ return getPsiElementIn(e, file); } - if (dataId.equals(AnActionEvent.injectedId(DataConstants.LANGUAGE))) { - PsiFile psiFile = (PsiFile)getData(AnActionEvent.injectedId(DataConstants.PSI_FILE), e, file); - Editor editor = (Editor)getData(AnActionEvent.injectedId(DataConstants.EDITOR), e, file); + if (dataId.equals(AnActionEvent.injectedId(LangDataKeys.LANGUAGE.getName()))) { + PsiFile psiFile = (PsiFile)getData(AnActionEvent.injectedId(LangDataKeys.PSI_FILE.getName()), e, file); + Editor editor = (Editor)getData(AnActionEvent.injectedId(PlatformDataKeys.EDITOR.getName()), e, file); if (psiFile == null || editor == null) return null; return getLanguageAtCurrentPositionInEditor(editor, psiFile); } - if (DataConstants.LANGUAGE.equals(dataId)) { + if (LangDataKeys.LANGUAGE.is(dataId)) { final PsiFile psiFile = getPsiFile(e, file); if (psiFile == null) return null; return getLanguageAtCurrentPositionInEditor(e, psiFile); } - if (dataId.equals(AnActionEvent.injectedId(DataConstants.VIRTUAL_FILE))) { - PsiFile psiFile = (PsiFile)getData(AnActionEvent.injectedId(DataConstants.PSI_FILE), e, file); + if (dataId.equals(AnActionEvent.injectedId(PlatformDataKeys.VIRTUAL_FILE.getName()))) { + PsiFile psiFile = (PsiFile)getData(AnActionEvent.injectedId(LangDataKeys.PSI_FILE.getName()), e, file); if (psiFile == null) return null; return psiFile.getVirtualFile(); } - if (dataId.equals(AnActionEvent.injectedId(DataConstants.PSI_FILE))) { - Editor editor = (Editor)getData(AnActionEvent.injectedId(DataConstants.EDITOR), e, file); - if (editor == null) return null; - return PsiDocumentManager.getInstance(editor.getProject()).getPsiFile(editor.getDocument()); + if (dataId.equals(AnActionEvent.injectedId(LangDataKeys.PSI_FILE.getName()))) { + Editor editor = (Editor)getData(AnActionEvent.injectedId(PlatformDataKeys.EDITOR.getName()), e, file); + if (editor == null) { + return null; + } + final Project project = editor.getProject(); + if (project == null) { + return null; + } + return PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); } - if (dataId.equals(DataConstants.PSI_FILE)) { + if (LangDataKeys.PSI_FILE.is(dataId)) { return getPsiFile(e, file); } if (LangDataKeys.IDE_VIEW.is(dataId)) { @@ -131,7 +138,11 @@ public class TextEditorPsiDataProvider implements EditorDataProvider { if (!file.isValid()) { return null; // fix for SCR 40329 } - PsiFile psiFile = PsiManager.getInstance(e.getProject()).findFile(file); + final Project project = e.getProject(); + if (project == null) { + return null; + } + PsiFile psiFile = PsiManager.getInstance(project).findFile(file); return psiFile != null && psiFile.isValid() ? psiFile : null; } } diff --git a/platform/lang-impl/src/com/intellij/openapi/module/impl/scopes/ModuleWithDependentsScope.java b/platform/lang-impl/src/com/intellij/openapi/module/impl/scopes/ModuleWithDependentsScope.java index 042e67a688fd..4523bb6f9e8a 100644 --- a/platform/lang-impl/src/com/intellij/openapi/module/impl/scopes/ModuleWithDependentsScope.java +++ b/platform/lang-impl/src/com/intellij/openapi/module/impl/scopes/ModuleWithDependentsScope.java @@ -80,7 +80,7 @@ public class ModuleWithDependentsScope extends GlobalSearchScope { if (moduleOfFile == null) return false; if (!myModules.contains(moduleOfFile)) return false; if (myOnlyTests && !myProjectFileIndex.isInTestSourceContent(file)) return false; - if (myProjectFileIndex.isInLibraryClasses(file)) return false; + if (myProjectFileIndex.isInLibraryClasses(file) && !myProjectFileIndex.isInSourceContent(file)) return false; return true; } diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java index 85f89a22200e..487fed85fe48 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/ContentEntryTreeEditor.java @@ -20,10 +20,10 @@ import com.intellij.ide.util.treeView.AbstractTreeBuilder; import com.intellij.ide.util.treeView.AbstractTreeStructure; import com.intellij.ide.util.treeView.NodeDescriptor; import com.intellij.idea.ActionsBundle; +import com.intellij.openapi.actionSystem.CustomShortcutSet; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.actionSystem.Presentation; -import com.intellij.openapi.actionSystem.CustomShortcutSet; import com.intellij.openapi.actionSystem.ex.CustomComponentAction; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.FileSystemTree; @@ -34,8 +34,8 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.roots.SourceFolder; import com.intellij.openapi.roots.ui.configuration.actions.IconWithTextAction; -import com.intellij.openapi.roots.ui.configuration.actions.ToggleSourcesStateAction; import com.intellij.openapi.roots.ui.configuration.actions.ToggleExcludedStateAction; +import com.intellij.openapi.roots.ui.configuration.actions.ToggleSourcesStateAction; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vfs.VirtualFile; @@ -256,7 +256,7 @@ public abstract class ContentEntryTreeEditor { @Nullable public Object getData(@NonNls final String dataId) { - if (dataId.equals(FileSystemTree.DATA_KEY.getName())) { + if (FileSystemTree.DATA_KEY.is(dataId)) { return myFileSystemTree; } return null; diff --git a/platform/lang-impl/src/com/intellij/openapi/vfs/encoding/FileTreeTable.java b/platform/lang-impl/src/com/intellij/openapi/vfs/encoding/FileTreeTable.java index 5741dd17fdd8..1aaf4bfc588a 100644 --- a/platform/lang-impl/src/com/intellij/openapi/vfs/encoding/FileTreeTable.java +++ b/platform/lang-impl/src/com/intellij/openapi/vfs/encoding/FileTreeTable.java @@ -102,8 +102,10 @@ public class FileTreeTable extends AbstractFileTreeTable { Presentation templatePresentation = changeAction.getTemplatePresentation(); final JComponent comboComponent = changeAction.createCustomComponent(templatePresentation); - DataContext dataContext = SimpleDataContext.getSimpleContext(DataConstants.VIRTUAL_FILE, myVirtualFile, SimpleDataContext.getProjectContext(getProject())); - AnActionEvent event = new AnActionEvent(null, dataContext, ActionPlaces.UNKNOWN, templatePresentation, ActionManager.getInstance(), 0); + DataContext dataContext = SimpleDataContext + .getSimpleContext(PlatformDataKeys.VIRTUAL_FILE.getName(), myVirtualFile, SimpleDataContext.getProjectContext(getProject())); + AnActionEvent event = + new AnActionEvent(null, dataContext, ActionPlaces.UNKNOWN, templatePresentation, ActionManager.getInstance(), 0); changeAction.update(event); editorComponent = comboComponent; comboComponent.addComponentListener(new ComponentAdapter() { diff --git a/platform/lang-impl/src/com/intellij/openapi/wm/impl/status/TogglePopupHintsPanel.java b/platform/lang-impl/src/com/intellij/openapi/wm/impl/status/TogglePopupHintsPanel.java index e88872a4061e..98b893f1c6d9 100644 --- a/platform/lang-impl/src/com/intellij/openapi/wm/impl/status/TogglePopupHintsPanel.java +++ b/platform/lang-impl/src/com/intellij/openapi/wm/impl/status/TogglePopupHintsPanel.java @@ -84,7 +84,8 @@ public class TogglePopupHintsPanel extends JPanel implements StatusBarPatch{ } public void clear() { - + myHectorLabel.setIcon(EMPTY_ICON); + myHectorLabel.setToolTipText(null); } public void updateStatus() { diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/DependenciesPanel.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/DependenciesPanel.java index aa8bf14a6d00..eed46ceb4939 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/DependenciesPanel.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/DependenciesPanel.java @@ -436,14 +436,14 @@ public class DependenciesPanel extends JPanel implements Disposable, DataProvide @Nullable @NonNls public Object getData(@NonNls String dataId) { - if (dataId.equals(DataConstants.PSI_ELEMENT)) { + if (LangDataKeys.PSI_ELEMENT.is(dataId)) { final PackageDependenciesNode selectedNode = myRightTree.getSelectedNode(); if (selectedNode != null) { final PsiElement element = selectedNode.getPsiElement(); return element != null && element.isValid() ? element : null; } } - if (dataId.equals(DataConstants.HELP_ID)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return "dependency.viewer.tool.window"; } return null; @@ -675,10 +675,10 @@ public class DependenciesPanel extends JPanel implements Disposable, DataProvide private static class MyTree extends Tree implements DataProvider { public Object getData(String dataId) { PackageDependenciesNode node = getSelectedNode(); - if (DataConstants.NAVIGATABLE.equals(dataId)) { + if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { return node; } - if (DataConstants.PSI_ELEMENT.equals(dataId) && node != null) { + if (LangDataKeys.PSI_ELEMENT.is(dataId) && node != null) { final PsiElement element = node.getPsiElement(); return element != null && element.isValid() ? element : null; } diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/UsagesPanel.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/UsagesPanel.java index 2323eee43809..89733f8fc511 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/UsagesPanel.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/UsagesPanel.java @@ -18,8 +18,8 @@ package com.intellij.packageDependencies.ui; import com.intellij.analysis.AnalysisScopeBundle; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; @@ -114,7 +114,7 @@ public abstract class UsagesPanel extends JPanel implements Disposable, DataProv @Nullable @NonNls public Object getData(@NonNls String dataId) { - if (dataId.equals(DataConstants.HELP_ID)) { + if (PlatformDataKeys.HELP_ID.is(dataId)) { return "ideaInterface.find"; } return null; diff --git a/platform/lang-impl/src/com/intellij/pom/tree/events/impl/TreeChangeEventImpl.java b/platform/lang-impl/src/com/intellij/pom/tree/events/impl/TreeChangeEventImpl.java index def3b1dbc4b8..e36accb9a054 100644 --- a/platform/lang-impl/src/com/intellij/pom/tree/events/impl/TreeChangeEventImpl.java +++ b/platform/lang-impl/src/com/intellij/pom/tree/events/impl/TreeChangeEventImpl.java @@ -31,11 +31,7 @@ import gnu.trove.THashMap; import java.util.*; /** - * Created by IntelliJ IDEA. - * User: ik - * Date: Oct 6, 2004 - * Time: 11:11:40 PM - * To change this template use File | Settings | File Templates. + * @author ik */ public class TreeChangeEventImpl implements TreeChangeEvent{ private final Map myChangedElements = new THashMap(); diff --git a/platform/lang-impl/src/com/intellij/psi/PsiAnchor.java b/platform/lang-impl/src/com/intellij/psi/PsiAnchor.java index 81ee7d95cd51..24121c111b39 100644 --- a/platform/lang-impl/src/com/intellij/psi/PsiAnchor.java +++ b/platform/lang-impl/src/com/intellij/psi/PsiAnchor.java @@ -26,6 +26,7 @@ import com.intellij.openapi.util.NullableComputable; import com.intellij.openapi.util.TextRange; import com.intellij.psi.impl.light.LightElement; import com.intellij.psi.impl.source.PsiFileImpl; +import com.intellij.psi.impl.source.PsiFileWithStubSupport; import com.intellij.psi.stubs.StubBase; import com.intellij.psi.stubs.StubElement; import com.intellij.psi.stubs.StubTree; @@ -46,7 +47,7 @@ public abstract class PsiAnchor { public abstract int getEndOffset(); public static PsiAnchor create(final PsiElement element) { - if (element instanceof PsiCompiledElement || element instanceof PsiFile) { + if (element instanceof PsiFile) { return new HardReference(element); } @@ -55,7 +56,7 @@ public abstract class PsiAnchor { return new HardReference(element); } - if (element instanceof StubBasedPsiElement && element.isPhysical() && ((PsiFileImpl)file).getContentElementType() instanceof IStubFileElementType) { + if (element instanceof StubBasedPsiElement && element.isPhysical() && (element instanceof PsiCompiledElement || ((PsiFileImpl)file).getContentElementType() instanceof IStubFileElementType)) { final StubBasedPsiElement elt = (StubBasedPsiElement)element; if (elt.getStub() != null || elt.getElementType().shouldCreateStub(element.getNode())) { return new StubIndexReference(file, calcStubIndex((StubBasedPsiElement)element)); @@ -225,12 +226,17 @@ public abstract class PsiAnchor { public PsiElement retrieve() { return ApplicationManager.getApplication().runReadAction(new NullableComputable() { public PsiElement compute() { - PsiFileImpl fileImpl = (PsiFileImpl)myFile; + PsiFileWithStubSupport fileImpl = (PsiFileWithStubSupport)myFile; StubTree tree = fileImpl.getStubTree(); boolean foreign = (tree == null); if (foreign) { - tree = fileImpl.calcStubTree(); + if (fileImpl instanceof PsiFileImpl) { + tree = ((PsiFileImpl)fileImpl).calcStubTree(); + } + else { + return null; + } } StubElement stub = tree.getPlainList().get(myIndex); diff --git a/platform/lang-impl/src/com/intellij/psi/SingleRootFileViewProvider.java b/platform/lang-impl/src/com/intellij/psi/SingleRootFileViewProvider.java index 3c650e22b736..438eff30e62b 100644 --- a/platform/lang-impl/src/com/intellij/psi/SingleRootFileViewProvider.java +++ b/platform/lang-impl/src/com/intellij/psi/SingleRootFileViewProvider.java @@ -162,7 +162,7 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi if (component.isViewProviderLocked(this)) { throw new RuntimeException("Document is locked by write PSI operations. Use PsiDocumentManager.doPostponedOperationsAndUnblockDocument() to commit PSI changes to the document."); } - component.doPostponedFormatting(); + component.postponedFormatting(this); final PsiFileImpl psiFile = (PsiFileImpl)getCachedPsi(getBaseLanguage()); if (psiFile != null && psiFile.isContentsLoaded() && getContent()instanceof DocumentContent) { setContent(new PsiFileContent(psiFile, getModificationStamp())); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/PostprocessReformattingAspect.java b/platform/lang-impl/src/com/intellij/psi/impl/source/PostprocessReformattingAspect.java index 5003994f2c83..cb2dd5d39464 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/PostprocessReformattingAspect.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/PostprocessReformattingAspect.java @@ -215,29 +215,42 @@ public class PostprocessReformattingAspect implements PomModelAspect, Disposable public void run() { if (isDisabled()) return; try { - for (final FileViewProvider viewProvider : myUpdatedProviders) { + FileViewProvider[] viewProviders = myUpdatedProviders.toArray(new FileViewProvider[myUpdatedProviders.size()]); + for (final FileViewProvider viewProvider : viewProviders) { doPostponedFormatting(viewProvider); } } finally { LOG.assertTrue(myReformatElements.isEmpty()); - myUpdatedProviders.clear(); - myReformatElements.clear(); } } }); } + public void postponedFormatting(final FileViewProvider viewProvider) { + postponedFormattingImpl(viewProvider, true); + } + public void doPostponedFormatting(final FileViewProvider viewProvider) { + postponedFormattingImpl(viewProvider, false); + } + + private void postponedFormattingImpl(final FileViewProvider viewProvider, final boolean check) { atomic(new Runnable() { public void run() { - if (isDisabled()) return; + if (isDisabled() || check && !myUpdatedProviders.contains(viewProvider)) return; - disablePostprocessFormattingInside(new Runnable() { - public void run() { - doPostponedFormattingInner(viewProvider); - } - }); + try { + disablePostprocessFormattingInside(new Runnable() { + public void run() { + doPostponedFormattingInner(viewProvider); + } + }); + } + finally { + myUpdatedProviders.remove(viewProvider); + myReformatElements.remove(viewProvider); + } } }); } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/AbstractPostFormatProcessor.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/AbstractPostFormatProcessor.java index 3957018cfaeb..5d1cb0e7f039 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/AbstractPostFormatProcessor.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/AbstractPostFormatProcessor.java @@ -21,11 +21,7 @@ import com.intellij.psi.codeStyle.CodeStyleSettings; import org.jetbrains.annotations.Nullable; /** - * Created by IntelliJ IDEA. - * User: lesya - * Date: Jul 21, 2005 - * Time: 7:53:12 PM - * To change this template use File | Settings | File Templates. + * @author lesya */ public class AbstractPostFormatProcessor { protected final CodeStyleSettings mySettings; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/AffectedTextRange.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/AffectedTextRange.java deleted file mode 100644 index f192707dcde2..000000000000 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/AffectedTextRange.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.intellij.psi.impl.source.codeStyle; - -import com.intellij.openapi.util.TextRange; - -/** - * Created by IntelliJ IDEA. - * User: lesya - * Date: Nov 26, 2008 - * Time: 6:26:45 PM - * To change this template use File | Settings | File Templates. - */ -public class AffectedTextRange extends TextRange { - private final boolean myProcessHeadingWhiteSpace; - - public AffectedTextRange(final int startOffset, final int endOffset, final boolean processHeadingWhiteSpace) { - super(startOffset, endOffset); - myProcessHeadingWhiteSpace = processHeadingWhiteSpace; - } - - public AffectedTextRange(final TextRange affectedRange, final boolean processHeadingWhitespace) { - this(affectedRange.getStartOffset(), affectedRange.getEndOffset(), processHeadingWhitespace); - } - - public boolean isProcessHeadingWhiteSpace() { - return myProcessHeadingWhiteSpace; - } -} diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/parsing/ParseUtilBase.java b/platform/lang-impl/src/com/intellij/psi/impl/source/parsing/ParseUtilBase.java index b9603a9bda6f..e5592643e0c8 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/parsing/ParseUtilBase.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/parsing/ParseUtilBase.java @@ -16,19 +16,15 @@ package com.intellij.psi.impl.source.parsing; -import com.intellij.psi.impl.source.tree.TreeElement; -import com.intellij.psi.tree.IElementType; +import com.intellij.lang.ASTFactory; import com.intellij.lexer.Lexer; import com.intellij.lexer.LexerUtil; +import com.intellij.psi.impl.source.tree.TreeElement; +import com.intellij.psi.tree.IElementType; import com.intellij.util.CharTable; -import com.intellij.lang.ASTFactory; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: 20.04.2009 - * Time: 15:02:52 - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class ParseUtilBase { public static TreeElement createTokenElement(Lexer lexer, CharTable table) { diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/CustomizingReferenceProvider.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/CustomizingReferenceProvider.java index 41aa37b3dc07..ad10402686e8 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/CustomizingReferenceProvider.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/CustomizingReferenceProvider.java @@ -27,15 +27,11 @@ import java.util.HashMap; import java.util.Map; /** - * Created by IntelliJ IDEA. - * User: Maxim.Mossienko - * Date: Nov 9, 2005 - * Time: 8:10:06 PM - * To change this template use File | Settings | File Templates. + * @author Maxim.Mossienko */ public class CustomizingReferenceProvider extends PsiReferenceProvider implements CustomizableReferenceProvider { private final CustomizableReferenceProvider myProvider; - private @Nullable Map myOptions; + private @Nullable Map myOptions; public CustomizingReferenceProvider(@NotNull CustomizableReferenceProvider provider) { myProvider = provider; @@ -43,7 +39,7 @@ public class CustomizingReferenceProvider extends PsiReferenceProvider implement public