one more case of http://youtrack.jetbrains.net/issue/IDEA-25675 : http://ea.jetbrains...
authorDmitry Jemerov <yole@jetbrains.com>
Tue, 9 Mar 2010 12:53:00 +0000 (15:53 +0300)
committerDmitry Jemerov <yole@jetbrains.com>
Tue, 9 Mar 2010 13:02:08 +0000 (16:02 +0300)
platform/lang-impl/src/com/intellij/codeInsight/editorActions/CopyPasteFoldingProcessor.java
platform/lang-impl/src/com/intellij/codeInsight/editorActions/FoldingTransferableData.java

index 9636cfc40ea8fc5c6f0ddfbffdd64116ceff3962..350f8550566bf11118fda45beef9c413bce632c5 100644 (file)
@@ -24,6 +24,7 @@ import com.intellij.psi.PsiFile;
 import com.intellij.codeInsight.folding.CodeFoldingManager;
 import org.jetbrains.annotations.Nullable;
 
+import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
 import java.util.ArrayList;
@@ -59,8 +60,10 @@ public class CopyPasteFoldingProcessor implements CopyPastePostProcessor {
   public TextBlockTransferableData extractTransferableData(final Transferable content) {
     FoldingTransferableData foldingData = null;
     try {
-      foldingData =
-      (FoldingTransferableData)content.getTransferData(FoldingTransferableData.FoldingData.FLAVOR);
+      final DataFlavor flavor = FoldingTransferableData.FoldingData.getDataFlavor();
+      if (flavor != null) {
+        foldingData = (FoldingTransferableData)content.getTransferData(flavor);
+      }
     }
     catch (UnsupportedFlavorException e) {
     }
index 20791b4c4ffcd2861c38179a0525730676a018af..6225bae2f458f090a2e77d9e7465a0e805ed277f 100644 (file)
@@ -16,7 +16,6 @@
 
 package com.intellij.codeInsight.editorActions;
 
-import com.intellij.codeInsight.CodeInsightBundle;
 import org.jetbrains.annotations.NonNls;
 
 import java.awt.datatransfer.DataFlavor;
@@ -30,7 +29,7 @@ public class FoldingTransferableData implements TextBlockTransferableData, Seria
   }
 
   public DataFlavor getFlavor() {
-    return FoldingData.FLAVOR;
+    return FoldingData.getDataFlavor();
   }
 
   public int getOffsetCount() {
@@ -66,8 +65,7 @@ public class FoldingTransferableData implements TextBlockTransferableData, Seria
   }
 
   public static class FoldingData implements Cloneable, Serializable {
-    public static final @NonNls DataFlavor FLAVOR = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=" + FoldingData.class.getName(),
-                                                                   CodeInsightBundle.message("paste.data.flavor.folding"));
+    private static @NonNls DataFlavor ourFlavor;
 
     public int startOffset;
     public int endOffset;
@@ -87,5 +85,18 @@ public class FoldingTransferableData implements TextBlockTransferableData, Seria
         throw new RuntimeException();
       }
     }
+
+    public static DataFlavor getDataFlavor() {
+      if (ourFlavor != null) {
+        return ourFlavor;
+      }
+      try {
+        ourFlavor = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType + ";class=" + FoldingData.class.getName(), "FoldingData");
+      }
+      catch (NoClassDefFoundError e) {
+        return null;
+      }
+      return ourFlavor;
+    }
   }
 }