*/
package com.intellij.compiler.impl;
-import com.intellij.*;
-import com.intellij.analysis.*;
+import com.intellij.CommonBundle;
+import com.intellij.analysis.AnalysisScope;
import com.intellij.compiler.*;
-import com.intellij.compiler.make.*;
-import com.intellij.compiler.progress.*;
-import com.intellij.diagnostic.*;
-import com.intellij.openapi.application.*;
+import com.intellij.compiler.make.CacheCorruptedException;
+import com.intellij.compiler.make.CacheUtils;
+import com.intellij.compiler.make.DependencyCache;
+import com.intellij.compiler.progress.CompilerTask;
+import com.intellij.diagnostic.IdeErrorsDialog;
+import com.intellij.diagnostic.PluginException;
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.compiler.*;
import com.intellij.openapi.compiler.Compiler;
-import com.intellij.openapi.compiler.ex.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.extensions.*;
-import com.intellij.openapi.fileEditor.*;
-import com.intellij.openapi.fileTypes.*;
-import com.intellij.openapi.module.*;
-import com.intellij.openapi.progress.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.projectRoots.*;
+import com.intellij.openapi.compiler.ex.CompileContextEx;
+import com.intellij.openapi.compiler.ex.CompilerPathsEx;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.extensions.Extensions;
+import com.intellij.openapi.extensions.PluginId;
+import com.intellij.openapi.fileEditor.FileDocumentManager;
+import com.intellij.openapi.fileTypes.FileType;
+import com.intellij.openapi.fileTypes.FileTypeManager;
+import com.intellij.openapi.fileTypes.StdFileTypes;
+import com.intellij.openapi.module.LanguageLevelUtil;
+import com.intellij.openapi.module.Module;
+import com.intellij.openapi.module.ModuleManager;
+import com.intellij.openapi.progress.ProcessCanceledException;
+import com.intellij.openapi.progress.ProgressIndicator;
+import com.intellij.openapi.progress.ProgressManager;
+import com.intellij.openapi.project.DumbService;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.project.ProjectBundle;
+import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.*;
-import com.intellij.openapi.roots.ex.*;
-import com.intellij.openapi.roots.ui.configuration.*;
-import com.intellij.openapi.ui.*;
+import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
+import com.intellij.openapi.roots.ui.configuration.CommonContentEntriesEditor;
+import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService;
+import com.intellij.openapi.ui.MessageType;
+import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.*;
-import com.intellij.openapi.util.io.*;
-import com.intellij.openapi.util.registry.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.openapi.wm.*;
-import com.intellij.packageDependencies.*;
-import com.intellij.pom.java.*;
-import com.intellij.psi.*;
-import com.intellij.util.*;
+import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.registry.Registry;
+import com.intellij.openapi.vfs.LocalFileSystem;
+import com.intellij.openapi.vfs.VfsUtil;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.openapi.vfs.VirtualFileManager;
- import com.intellij.openapi.wm.*;
++import com.intellij.openapi.wm.StatusBar;
++import com.intellij.openapi.wm.ToolWindowId;
++import com.intellij.openapi.wm.ToolWindowManager;
++import com.intellij.openapi.wm.WindowManager;
+import com.intellij.packageDependencies.DependenciesBuilder;
+import com.intellij.packageDependencies.ForwardDependenciesBuilder;
+import com.intellij.pom.java.LanguageLevel;
+import com.intellij.psi.PsiCompiledElement;
+import com.intellij.psi.PsiDocumentManager;
+import com.intellij.psi.PsiFile;
+import com.intellij.psi.PsiManager;
+import com.intellij.util.Chunk;
+import com.intellij.util.LocalTimeCounter;
+import com.intellij.util.StringBuilderSpinAllocator;
+import com.intellij.util.ThrowableRunnable;
import com.intellij.util.concurrency.Semaphore;
-import com.intellij.util.containers.*;
+import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.HashMap;
-import gnu.trove.*;
-import org.jetbrains.annotations.*;
+import com.intellij.util.containers.MultiMap;
+import com.intellij.util.containers.OrderedSet;
+import gnu.trove.TObjectHashingStrategy;
+import org.jetbrains.annotations.NonNls;
+import org.jetbrains.annotations.NotNull;
import java.io.*;
import java.util.*;
import com.intellij.execution.filters.Filter;
import com.intellij.execution.filters.TextConsoleBuilder;
import com.intellij.execution.filters.TextConsoleBuilderFactory;
--import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.runners.ExecutionEnvironment;
++import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.util.ExecutionErrorDialog;
import com.intellij.openapi.actionSystem.DataContext;
--import com.intellij.openapi.project.Project;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
++import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
--import com.intellij.psi.util.PsiTreeUtil;
--import com.intellij.psi.util.PsiClassUtil;
import com.intellij.psi.search.GlobalSearchScope;
++import com.intellij.psi.util.PsiClassUtil;
++import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
*/
package com.intellij.codeInsight.completion;
--import com.intellij.codeInsight.*;
++import com.intellij.codeInsight.AutoPopupController;
++import com.intellij.codeInsight.CodeInsightUtilBase;
++import com.intellij.codeInsight.TailType;
++import com.intellij.codeInsight.TailTypes;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.find.findUsages.FindUsagesManager;
import com.intellij.find.findUsages.FindUsagesOptions;
import com.intellij.find.impl.FindManagerImpl;
--import com.intellij.ide.util.SuperMethodWarningUtil;
import com.intellij.ide.DataManager;
++import com.intellij.ide.util.SuperMethodWarningUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.undo.UndoUtil;
import com.intellij.openapi.editor.Editor;
*/
package com.intellij.codeInsight.daemon.impl.quickfix;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.daemon.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.project.*;
+import com.intellij.codeInsight.CodeInsightUtilBase;
+import com.intellij.codeInsight.daemon.QuickFixBundle;
+import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.*;
-import com.intellij.psi.util.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.util.IncorrectOperationException;
- import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
/**
* @author ven
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.project.*;
+import com.intellij.codeInsight.intention.AddAnnotationFix;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
-import org.jetbrains.annotations.*;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
public class AddDeprecationAnnotationFix extends AddAnnotationFix {
public AddDeprecationAnnotationFix() {
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.project.*;
+import com.intellij.codeInsight.AnnotationUtil;
+import com.intellij.codeInsight.intention.AddAnnotationFix;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
-import org.jetbrains.annotations.*;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
public class AddNullableNotNullAnnotationFix extends AddAnnotationFix {
public AddNullableNotNullAnnotationFix(final String annotation, final String annotationToRemove) {
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.highlighting.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.editor.colors.*;
-import com.intellij.openapi.project.*;
+import com.intellij.codeInsight.CodeInsightBundle;
+import com.intellij.codeInsight.CodeInsightUtilBase;
+import com.intellij.codeInsight.highlighting.HighlightManager;
+import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.editor.colors.EditorColors;
+import com.intellij.openapi.editor.colors.EditorColorsManager;
+import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
-import com.intellij.psi.util.*;
-import com.intellij.util.*;
-import gnu.trove.*;
-import org.jetbrains.annotations.*;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.psi.util.PsiUtil;
+import com.intellij.util.IncorrectOperationException;
+import gnu.trove.TIntArrayList;
+import gnu.trove.TIntProcedure;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
/**
* @author ven
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.util.*;
+import com.intellij.codeInsight.CodeInsightBundle;
+import com.intellij.codeInsight.CodeInsightUtilBase;
+import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Key;
import com.intellij.psi.*;
-import com.intellij.psi.impl.source.tree.java.*;
-import com.intellij.psi.util.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.psi.util.PsiUtil;
+import com.intellij.util.IncorrectOperationException;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
public class AddSingleMemberStaticImportAction extends PsiElementBaseIntentionAction {
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.intention.impl.AddSingleMemberStaticImportAction");
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.project.*;
-import com.intellij.patterns.*;
+import com.intellij.codeInsight.CodeInsightBundle;
+import com.intellij.codeInsight.CodeInsightUtilBase;
+import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
+import com.intellij.patterns.PlatformPatterns;
import com.intellij.psi.*;
-import com.intellij.psi.codeStyle.*;
-import com.intellij.psi.util.*;
-import com.intellij.ui.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.psi.codeStyle.CodeStyleManager;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.ui.ColorChooser;
+import com.intellij.util.IncorrectOperationException;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
import java.awt.*;
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.util.*;
+import com.intellij.codeInsight.CodeInsightBundle;
+import com.intellij.codeInsight.CodeInsightServicesUtil;
+import com.intellij.codeInsight.CodeInsightUtilBase;
+import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.TextRange;
import com.intellij.psi.*;
-import com.intellij.psi.codeStyle.*;
+import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.controlFlow.*;
-import com.intellij.psi.util.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.util.IncorrectOperationException;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
-import java.util.*;
+import java.util.List;
public class InvertIfConditionAction extends PsiElementBaseIntentionAction {
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.intention.impl.InvertIfConditionAction");
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.daemon.impl.analysis.*;
-import com.intellij.codeInsight.daemon.impl.quickfix.*;
-import com.intellij.codeInsight.highlighting.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.editor.colors.*;
-import com.intellij.openapi.editor.markup.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.util.*;
+import com.intellij.codeInsight.CodeInsightBundle;
+import com.intellij.codeInsight.CodeInsightUtilBase;
+import com.intellij.codeInsight.daemon.impl.analysis.HighlightControlFlowUtil;
+import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil;
+import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils;
+import com.intellij.codeInsight.highlighting.HighlightManager;
+import com.intellij.codeInsight.intention.IntentionAction;
+import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
+import com.intellij.codeInsight.intention.QuickFixFactory;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.editor.colors.EditorColors;
+import com.intellij.openapi.editor.colors.EditorColorsManager;
+import com.intellij.openapi.editor.markup.TextAttributes;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Ref;
import com.intellij.psi.*;
-import com.intellij.psi.impl.source.jsp.jspJava.*;
-import com.intellij.psi.javadoc.*;
-import com.intellij.psi.util.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.psi.impl.source.jsp.jspJava.JspClass;
+import com.intellij.psi.javadoc.PsiDocComment;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.util.IncorrectOperationException;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
import java.util.*;
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.project.*;
+import com.intellij.codeInsight.CodeInsightBundle;
+import com.intellij.codeInsight.CodeInsightUtilBase;
+import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
-import com.intellij.psi.codeStyle.*;
-import com.intellij.psi.javadoc.*;
-import com.intellij.psi.util.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.psi.codeStyle.CodeStyleManager;
+import com.intellij.psi.javadoc.PsiDocComment;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.util.IncorrectOperationException;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
/**
* @author max
*/
package com.intellij.codeInsight.intention.impl;
-import com.intellij.codeInsight.*;
-import com.intellij.codeInsight.intention.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.project.*;
+import com.intellij.codeInsight.CodeInsightBundle;
+import com.intellij.codeInsight.CodeInsightUtilBase;
+import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
+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.psi.*;
-import com.intellij.psi.codeStyle.*;
-import com.intellij.psi.util.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.psi.codeStyle.CodeStyleManager;
+import com.intellij.psi.util.PsiTreeUtil;
+import com.intellij.util.IncorrectOperationException;
+import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
/**
* @author mike
import com.intellij.refactoring.extractMethod.InputVariables;
import com.intellij.refactoring.util.CommonRefactoringUtil;
import com.intellij.refactoring.util.RefactoringUtil;
--import com.intellij.util.VisibilityUtil;
import com.intellij.util.IncorrectOperationException;
++import com.intellij.util.VisibilityUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
--- /dev/null
-import java.util.*;
++import java.util.Collection;
+ class Test {
+ void foo() {
+ final Collection<? extends Number> extensions = getExtensions();
+ for (Number extension : exte<caret>nsions) {
+ }
+ }
+
+ Collection<? extends Number> getExtensions() {return null;}
+ }
+
--- /dev/null
-import java.util.*;
+ /*
+ * 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.
+ */
+
+ /*
+ * User: anna
+ * Date: 02-Jun-2010
+ */
+ package com.intellij.refactoring;
+
+ import com.intellij.openapi.fileEditor.FileDocumentManager;
+ import com.intellij.openapi.vfs.LocalFileSystem;
+ import com.intellij.openapi.vfs.VirtualFile;
+ import com.intellij.psi.*;
+ import com.intellij.psi.search.GlobalSearchScope;
+ import com.intellij.refactoring.extractclass.ExtractClassProcessor;
+ import com.intellij.refactoring.util.classMembers.MemberInfo;
+ import junit.framework.Assert;
+
++import java.util.ArrayList;
++import java.util.Arrays;
++import java.util.List;
++import java.util.TreeSet;
+
+ public class ExtractEnumTest extends MultiFileTestCase {
+
+ @Override
+ protected String getTestRoot() {
+ return "/refactoring/extractEnum/";
+ }
+
+ public void testOneConstant() throws Exception {
+ doTest(new RefactoringTestUtil.MemberDescriptor("FOO", PsiField.class, true));
+ }
+
+ public void testDependantConstants() throws Exception {
+ doTest(new RefactoringTestUtil.MemberDescriptor("FOO", PsiField.class, true),
+ new RefactoringTestUtil.MemberDescriptor("BAR", PsiField.class, true));
+ }
+
+ public void testReferencesOnEnumConstantInEnum() throws Exception {
+ doTest(new RefactoringTestUtil.MemberDescriptor("FOO", PsiField.class, true),
+ new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class));
+ }
+
+ public void testReferencesOnEnumConstantInOriginal() throws Exception {
+ doTest(new RefactoringTestUtil.MemberDescriptor("FOO", PsiField.class, true));
+ }
+
+ public void testForwardReferenceConflict() throws Exception {
+ doTest("Enum constant field <b><code>BAR</code></b> would forward reference on field field <b><code>FOO</code></b>", false,
+ new RefactoringTestUtil.MemberDescriptor("FOO", PsiField.class, false),
+ new RefactoringTestUtil.MemberDescriptor("BAR", PsiField.class, true));
+ }
+
+ public void testValueNameConflict() throws Exception {
+ doTest(new RefactoringTestUtil.MemberDescriptor("FOO", PsiField.class, true),
+ new RefactoringTestUtil.MemberDescriptor("value", PsiField.class, false));
+ }
+
+ private void doTest(final RefactoringTestUtil.MemberDescriptor... memberDescriptors) throws Exception {
+ doTest(null, false, memberDescriptors);
+ }
+
+ private void doTest(final String conflicts,
+ final boolean generateAccessors,
+ final RefactoringTestUtil.MemberDescriptor... memberDescriptors) throws Exception {
+ doTest(new PerformAction() {
+ public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception {
+ final PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject));
+ assertNotNull("Class Test not found", aClass);
+
+ final ArrayList<PsiField> fields = new ArrayList<PsiField>();
+ final ArrayList<PsiMethod> methods = new ArrayList<PsiMethod>();
+ final List<MemberInfo> enumConstants = new ArrayList<MemberInfo>();
+ for (MemberInfo memberInfo : RefactoringTestUtil.findMembers(aClass, memberDescriptors)) {
+ final PsiMember member = memberInfo.getMember();
+ if (member instanceof PsiField) {
+ fields.add((PsiField)member);
+ if (member.hasModifierProperty(PsiModifier.STATIC) && member.hasModifierProperty(PsiModifier.FINAL) && ((PsiField)member).hasInitializer()) {
+ if (memberInfo.isToAbstract()) {
+ enumConstants.add(memberInfo);
+ }
+ }
+ }
+ else if (member instanceof PsiMethod) {
+ methods.add((PsiMethod)member);
+ }
+ }
+ try {
+ final ExtractClassProcessor processor =
+ new ExtractClassProcessor(aClass, fields, methods, new ArrayList<PsiClass>(), "", "EEnum",
+ null, generateAccessors, enumConstants);
+
+ processor.run();
+ LocalFileSystem.getInstance().refresh(false);
+ FileDocumentManager.getInstance().saveAllDocuments();
+ }
+ catch (BaseRefactoringProcessor.ConflictsInTestsException e) {
+ if (conflicts != null) {
+ TreeSet expectedConflictsSet = new TreeSet(Arrays.asList(conflicts.split("\n")));
+ TreeSet actualConflictsSet = new TreeSet(Arrays.asList(e.getMessage().split("\n")));
+ Assert.assertEquals(expectedConflictsSet, actualConflictsSet);
+ return;
+ }
+ else {
+ fail(e.getMessage());
+ }
+ }
+ if (conflicts != null) {
+ fail("Conflicts were not detected: " + conflicts);
+ }
+ }
+ });
+ }
+ }
+
package com.intellij.refactoring;
++import com.intellij.JavaTestUtil;
import com.intellij.codeInsight.CodeInsightUtil;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.refactoring.util.duplicates.Match;
import com.intellij.testFramework.LightCodeInsightTestCase;
import com.intellij.util.IncorrectOperationException;
--import com.intellij.JavaTestUtil;
import org.jetbrains.annotations.NonNls;
import java.util.List;
package com.intellij.refactoring;
++import com.intellij.JavaTestUtil;
+ import com.intellij.openapi.projectRoots.Sdk;
+ import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.psi.PsiPrimitiveType;
import com.intellij.psi.PsiType;
import com.intellij.refactoring.introduceField.BaseExpressionToFieldHandler;
import com.intellij.testFramework.LightCodeInsightTestCase;
--import com.intellij.JavaTestUtil;
/**
* @author ven
*/
package com.intellij.refactoring;
++import com.intellij.JavaTestUtil;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.refactoring.replaceConstructorWithBuilder.ParameterData;
import com.intellij.refactoring.replaceConstructorWithBuilder.ReplaceConstructorWithBuilderProcessor;
import com.intellij.util.containers.HashMap;
--import com.intellij.JavaTestUtil;
import java.util.LinkedHashMap;
import java.util.Map;
package com.intellij.execution.junit;
--import com.intellij.execution.*;
++import com.intellij.execution.Location;
++import com.intellij.execution.PsiLocation;
++import com.intellij.execution.RunManager;
++import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.Extensions;
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.util.containers.HashMap;
import com.intellij.util.containers.HashSet;
import org.jetbrains.annotations.NonNls;
import com.intellij.execution.*;
import com.intellij.execution.configurations.RunConfiguration;
--import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.runners.ExecutionEnvironment;
++import com.intellij.execution.runners.ProgramRunner;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.ui.Messages;
import org.jetbrains.annotations.NotNull;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
--import java.util.*;
++import java.util.ArrayList;
++import java.util.Collections;
import java.util.List;
++import java.util.Map;
/**
* User: anna
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.ui.Splitter;
--import com.intellij.openapi.ui.popup.*;
++import com.intellij.openapi.ui.popup.JBPopupFactory;
++import com.intellij.openapi.ui.popup.ListPopup;
++import com.intellij.openapi.ui.popup.ListPopupStep;
++import com.intellij.openapi.ui.popup.PopupStep;
import com.intellij.openapi.ui.popup.util.BaseListPopupStep;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.IconLoader;
import com.intellij.execution.process.ProcessOutputTypes;
import com.intellij.execution.runners.DefaultProgramRunner;
import com.intellij.execution.runners.ProgramRunner;
--import com.intellij.openapi.application.ApplicationManager;
+ import com.intellij.openapi.application.ex.ApplicationManagerEx;
+ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProgressManager;
- import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.Ref;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
-import java.util.*;
+import java.util.ArrayList;
++import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
public abstract class BaseProjectTreeBuilder extends AbstractTreeBuilder {
protected final Project myProject;
import com.intellij.psi.PsiManager;
import com.intellij.refactoring.RefactoringBundle;
import com.intellij.refactoring.util.CommonRefactoringUtil;
- import com.intellij.ui.EditorComboBox;
- import com.intellij.ui.EditorComboWithBrowseButton;
+ import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.IdeBorderFactory;
--import com.intellij.ui.RecentsManager;
+ import com.intellij.ui.TextFieldWithStoredHistory;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.Progressive;
import com.intellij.openapi.util.ActionCallback;
- import com.intellij.openapi.util.registry.Registry;
+ import com.intellij.openapi.util.AsyncResult;
-import com.intellij.openapi.util.registry.Registry;
import com.intellij.util.containers.HashSet;
import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.update.MergingUpdateQueue;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
--import java.awt.event.KeyEvent;
import java.awt.event.InputEvent;
++import java.awt.event.KeyEvent;
public class ListScrollingUtil {
private static final Logger LOG = Logger.getInstance("#com.intellij.ui.ListScrollingUtil");
*/
package com.intellij.notification.impl;
-import com.intellij.ide.*;
-import com.intellij.notification.*;
-import com.intellij.notification.impl.ui.*;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.ui.popup.*;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.wm.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.ide.DataManager;
+import com.intellij.notification.Notification;
+import com.intellij.notification.NotificationType;
+import com.intellij.notification.impl.ui.NotificationsListPanel;
+import com.intellij.openapi.actionSystem.PlatformDataKeys;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.popup.JBPopup;
+import com.intellij.openapi.util.IconLoader;
- import com.intellij.openapi.wm.StatusBarWidget;
+import com.intellij.openapi.wm.StatusBar;
++import com.intellij.openapi.wm.StatusBarWidget;
+import com.intellij.util.Consumer;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
*/
package com.intellij.notification.impl;
- import com.intellij.notification.Notifications;
-import com.intellij.notification.*;
-import com.intellij.openapi.*;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.components.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.ui.popup.*;
-import com.intellij.openapi.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.notification.Notification;
+import com.intellij.notification.NotificationDisplayType;
++import com.intellij.notification.Notifications;
++import com.intellij.openapi.Disposable;
+import com.intellij.openapi.application.Application;
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.components.ProjectComponent;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.popup.Balloon;
+import com.intellij.openapi.util.Disposer;
- import com.intellij.openapi.Disposable;
+import org.jetbrains.annotations.NotNull;
-import java.util.*;
+import java.util.Collection;
/**
* @author spleaner
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.util.Key;
--import com.intellij.openapi.vfs.*;
++import com.intellij.openapi.vfs.VirtualFile;
++import com.intellij.openapi.vfs.VirtualFileAdapter;
++import com.intellij.openapi.vfs.VirtualFileEvent;
++import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.vfs.newvfs.NewVirtualFile;
import com.intellij.util.containers.WeakValueHashMap;
+ import com.intellij.util.io.fs.FilePath;
import org.jetbrains.annotations.NotNull;
import java.lang.ref.Reference;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.lang.reflect.Field;
--import java.util.*;
++import java.util.ArrayList;
++import java.util.Arrays;
++import java.util.List;
++import java.util.Map;
/**
* @author Eugene Belyaev
*/
package com.intellij.openapi.wm.impl;
-import com.intellij.ide.*;
+import com.intellij.ide.AppLifecycleListener;
+import com.intellij.ide.DataManager;
import com.intellij.ide.impl.ProjectUtil;
-import com.intellij.ide.ui.*;
-import com.intellij.openapi.*;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.application.ex.*;
-import com.intellij.openapi.keymap.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.util.registry.*;
-import com.intellij.openapi.wm.*;
-import com.intellij.openapi.wm.ex.*;
-import com.intellij.openapi.wm.impl.status.*;
-import com.intellij.ui.*;
-import com.intellij.util.ui.*;
-import org.jetbrains.annotations.*;
+import com.intellij.ide.ui.UISettings;
+import com.intellij.openapi.Disposable;
+import com.intellij.openapi.MnemonicHelper;
+import com.intellij.openapi.actionSystem.ActionManager;
+import com.intellij.openapi.actionSystem.DataProvider;
+import com.intellij.openapi.actionSystem.PlatformDataKeys;
+import com.intellij.openapi.application.Application;
+import com.intellij.openapi.application.ApplicationInfo;
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.application.ex.ApplicationInfoEx;
+import com.intellij.openapi.application.ex.ApplicationManagerEx;
+import com.intellij.openapi.keymap.KeymapManager;
+import com.intellij.openapi.project.DumbAwareRunnable;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.project.ProjectManager;
+import com.intellij.openapi.util.Disposer;
+import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.util.registry.Registry;
+import com.intellij.openapi.wm.IdeFrame;
+import com.intellij.openapi.wm.StatusBar;
+import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt;
++import com.intellij.openapi.wm.ex.StatusBarEx;
+import com.intellij.openapi.wm.impl.status.EncodingPanel;
+import com.intellij.openapi.wm.impl.status.InsertOverwritePanel;
+import com.intellij.openapi.wm.impl.status.PositionPanel;
+import com.intellij.openapi.wm.impl.status.ToggleReadOnlyAttributePanel;
+import com.intellij.ui.AppUIUtil;
+import com.intellij.ui.BalloonLayout;
+import com.intellij.ui.FocusTrackback;
+import com.intellij.util.ui.UIUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
*/
package com.intellij.openapi.wm.impl.status;
-import com.intellij.openapi.*;
-import com.intellij.openapi.progress.*;
-import com.intellij.openapi.ui.*;
-import com.intellij.openapi.ui.popup.*;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.util.text.*;
-import com.intellij.openapi.wm.*;
-import com.intellij.openapi.wm.ex.*;
-import com.intellij.ui.awt.*;
-import com.intellij.ui.popup.*;
-import com.intellij.util.*;
+import com.intellij.openapi.Disposable;
+import com.intellij.openapi.progress.TaskInfo;
+import com.intellij.openapi.ui.MessageType;
+import com.intellij.openapi.ui.popup.BalloonHandler;
+import com.intellij.openapi.ui.popup.ListPopup;
+import com.intellij.openapi.util.Disposer;
+import com.intellij.openapi.util.IconLoader;
+import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.openapi.wm.CustomStatusBarWidget;
+import com.intellij.openapi.wm.StatusBar;
+import com.intellij.openapi.wm.StatusBarWidget;
+import com.intellij.openapi.wm.ex.ProgressIndicatorEx;
+import com.intellij.openapi.wm.ex.StatusBarEx;
+import com.intellij.ui.awt.RelativePoint;
+import com.intellij.ui.popup.NotificationPopup;
+import com.intellij.util.Consumer;
import com.intellij.util.containers.HashMap;
-import com.intellij.util.ui.*;
-import org.jetbrains.annotations.*;
+import com.intellij.util.ui.UIUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import javax.swing.*;
-import javax.swing.event.*;
+import javax.swing.event.HyperlinkListener;
import java.awt.*;
-import java.awt.event.*;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
++import java.util.ArrayList;
import java.util.List;
-import java.util.*;
+import java.util.Map;
+import java.util.Random;
/**
* User: spLeaner
*/
package com.intellij.openapi.wm.impl.status;
-import com.intellij.idea.*;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.application.ex.*;
-import com.intellij.openapi.progress.*;
-import com.intellij.openapi.progress.impl.*;
-import com.intellij.openapi.ui.*;
-import com.intellij.openapi.ui.popup.*;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.wm.*;
-import com.intellij.openapi.wm.ex.*;
-import com.intellij.ui.awt.*;
-import com.intellij.ui.components.labels.*;
-import com.intellij.ui.components.panels.*;
-import com.intellij.util.*;
-import com.intellij.util.ui.*;
-import com.intellij.util.ui.update.*;
-import org.jetbrains.annotations.*;
+import com.intellij.idea.ActionsBundle;
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.application.ex.ApplicationManagerEx;
+import com.intellij.openapi.progress.TaskInfo;
+import com.intellij.openapi.progress.impl.ProgressManagerImpl;
+import com.intellij.openapi.ui.MessageType;
+import com.intellij.openapi.ui.popup.Balloon;
+import com.intellij.openapi.ui.popup.BalloonHandler;
+import com.intellij.openapi.ui.popup.JBPopupFactory;
+import com.intellij.openapi.util.MultiValuesMap;
+import com.intellij.openapi.util.Pair;
+import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.wm.CustomStatusBarWidget;
+import com.intellij.openapi.wm.StatusBar;
+import com.intellij.openapi.wm.StatusBarWidget;
+import com.intellij.openapi.wm.ex.ProgressIndicatorEx;
+import com.intellij.ui.awt.RelativePoint;
+import com.intellij.ui.components.labels.LinkLabel;
+import com.intellij.ui.components.labels.LinkListener;
+import com.intellij.ui.components.panels.Wrapper;
+import com.intellij.util.Alarm;
+import com.intellij.util.ui.AbstractLayoutManager;
+import com.intellij.util.ui.AsyncProcessIcon;
++import com.intellij.util.ui.EmptyIcon;
+import com.intellij.util.ui.UIUtil;
+import com.intellij.util.ui.update.MergingUpdateQueue;
+import com.intellij.util.ui.update.Update;
+import org.jetbrains.annotations.NotNull;
import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.event.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.event.HyperlinkListener;
import java.awt.*;
-import java.awt.event.*;
-import java.text.*;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
*/
package com.intellij.openapi.wm.impl.status;
-import com.intellij.ide.*;
-import com.intellij.ide.ui.*;
-import com.intellij.openapi.*;
-import com.intellij.openapi.progress.*;
-import com.intellij.openapi.progress.util.*;
-import com.intellij.openapi.ui.popup.*;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.wm.impl.content.*;
-import com.intellij.ui.*;
-import com.intellij.ui.components.panels.*;
-import com.intellij.util.ui.*;
+import com.intellij.ide.IdeBundle;
+import com.intellij.ide.ui.LafManager;
+import com.intellij.openapi.Disposable;
+import com.intellij.openapi.progress.TaskInfo;
+import com.intellij.openapi.progress.util.ProgressIndicatorBase;
+import com.intellij.openapi.ui.popup.IconButton;
+import com.intellij.openapi.util.EmptyRunnable;
+import com.intellij.openapi.util.IconLoader;
- import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.wm.impl.content.GraphicsConfig;
+import com.intellij.ui.InplaceButton;
+import com.intellij.ui.components.panels.NonOpaquePanel;
+import com.intellij.ui.components.panels.Wrapper;
+import com.intellij.util.ui.UIUtil;
import javax.swing.*;
-import javax.swing.border.*;
+import javax.swing.border.EmptyBorder;
import java.awt.*;
-import java.awt.event.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
public class InlineProgressIndicator extends ProgressIndicatorBase implements Disposable {
*/
package com.intellij.openapi.wm.impl.status;
-import com.intellij.ide.*;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.fileEditor.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.wm.*;
-import com.intellij.ui.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.ide.DataManager;
+import com.intellij.openapi.actionSystem.PlatformDataKeys;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.fileEditor.FileEditorManager;
+import com.intellij.openapi.project.Project;
- import com.intellij.openapi.wm.StatusBarWidget;
+import com.intellij.openapi.wm.StatusBar;
++import com.intellij.openapi.wm.StatusBarWidget;
+import com.intellij.ui.UIBundle;
+import com.intellij.util.Consumer;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.awt.*;
-import java.awt.event.*;
+import java.awt.event.MouseEvent;
/**
* @author cdr
*/
package com.intellij.openapi.wm.impl.status;
-import com.intellij.idea.*;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.wm.ex.*;
-import com.intellij.openapi.wm.impl.*;
-import org.jetbrains.annotations.*;
+import com.intellij.idea.ActionsBundle;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.actionSystem.ToggleAction;
++import com.intellij.openapi.project.DumbAware;
+import com.intellij.openapi.wm.ex.StatusBarEx;
+import com.intellij.openapi.wm.impl.IdeFrameImpl;
- import com.intellij.openapi.project.DumbAware;
+import org.jetbrains.annotations.Nullable;
import java.awt.*;
*/
package com.intellij.openapi.wm.impl.status;
-import com.intellij.ide.*;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.fileEditor.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.ui.*;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.openapi.wm.*;
-import com.intellij.ui.*;
-import com.intellij.util.*;
-import com.intellij.util.io.*;
-import org.jetbrains.annotations.*;
+import com.intellij.ide.DataManager;
+import com.intellij.openapi.actionSystem.PlatformDataKeys;
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.fileEditor.FileDocumentManager;
+import com.intellij.openapi.fileEditor.FileEditorManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.util.IconLoader;
+import com.intellij.openapi.vfs.VirtualFile;
- import com.intellij.openapi.wm.StatusBarWidget;
+import com.intellij.openapi.wm.StatusBar;
++import com.intellij.openapi.wm.StatusBarWidget;
+import com.intellij.ui.UIBundle;
+import com.intellij.util.Consumer;
+import com.intellij.util.io.ReadOnlyAttributeUtil;
- import com.intellij.util.ui.EmptyIcon;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import javax.swing.*;
-import java.awt.event.*;
-import java.io.*;
+import java.awt.event.MouseEvent;
+import java.io.IOException;
public class ToggleReadOnlyAttributePanel implements StatusBarWidget, StatusBarWidget.IconPresentation {
private static final Icon myLockedIcon = IconLoader.getIcon("/ide/readonly.png");
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.Progressive;
- import com.intellij.openapi.util.ActionCallback;
- import com.intellij.openapi.util.Condition;
- import com.intellij.openapi.util.Disposer;
- import com.intellij.openapi.util.Ref;
+ import com.intellij.openapi.util.*;
-import com.intellij.testFramework.TestLogger;
import com.intellij.util.Time;
import com.intellij.util.WaitFor;
import junit.framework.TestSuite;
--- /dev/null
-import java.util.*;
+ /*
+ * 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.openapi.diagnostic;
+
+
++import java.util.ArrayList;
++import java.util.List;
+
+ /**
+ * This is a very primitive fast logging class, primary for race-conditions debugging
+ */
+
+ public class Log {
+
+ private static List<String> myStrings = new ArrayList<String>();
+ private static List<Throwable> myThrowables = new ArrayList<Throwable>();
+ private static Object LOCK = new Object();
+
+ public static void print(String text) {
+ print(text, false);
+ }
+
+ public static void print(String text, boolean trace) {
+ synchronized (LOCK) {
+ myStrings.add(text);
+ myThrowables.add(trace ? new Exception() : null);
+ }
+ }
+
+ public static void flush() {
+ synchronized (LOCK) {
+ for (int i = 0; i < myStrings.size(); i++) {
+ String each = myStrings.get(i);
+ Throwable trace = myThrowables.get(i);
+ System.out.println(each);
+ if (trace != null) {
+ trace.printStackTrace(System.out);
+ }
+ }
+ myStrings.clear();
+ myThrowables.clear();
+ }
+ }
+ }
*/
package com.intellij.util.ui;
-import com.intellij.openapi.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.util.text.*;
-import com.intellij.ui.*;
-import com.intellij.util.*;
-import org.jetbrains.annotations.*;
+import com.intellij.openapi.Disposable;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.util.Disposer;
+import com.intellij.openapi.util.IconLoader;
+import com.intellij.openapi.util.Key;
+import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.ui.SideBorder;
+import com.intellij.util.ArrayUtil;
+import com.intellij.util.ReflectionUtil;
+import org.jetbrains.annotations.NonNls;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.TestOnly;
import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.plaf.*;
-import javax.swing.plaf.basic.*;
-import javax.swing.text.html.*;
-import javax.swing.tree.*;
+import javax.swing.border.Border;
+import javax.swing.border.LineBorder;
+import javax.swing.plaf.ProgressBarUI;
+import javax.swing.plaf.basic.BasicTreeUI;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.StyleSheet;
+import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.*;
-import java.awt.font.*;
+import java.awt.font.FontRenderContext;
+ import java.awt.geom.Rectangle2D;
-import java.lang.reflect.*;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.util.*;
import java.util.List;
-import java.util.Map;
-import java.util.concurrent.*;
-import java.util.regex.*;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.regex.Pattern;
/**
* @author max
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.patterns.PsiJavaPatterns;
import com.intellij.psi.*;
--import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
++import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
++import com.intellij.ui.SimpleColoredText;
++import com.intellij.ui.SimpleTextAttributes;
import com.intellij.util.Consumer;
import com.intellij.util.Icons;
import com.intellij.util.NullableFunction;
import com.intellij.util.Processor;
import com.intellij.util.containers.ContainerUtil;
--import com.intellij.ui.SimpleColoredText;
--import com.intellij.ui.SimpleTextAttributes;
import org.intellij.plugins.intelliLang.AdvancedSettingsUI;
import org.intellij.plugins.intelliLang.Configuration;
import org.intellij.plugins.intelliLang.inject.AbstractLanguageInjectionSupport;
import org.jetbrains.annotations.Nullable;
import java.util.*;
--import java.util.regex.Pattern;
import java.util.regex.Matcher;
++import java.util.regex.Pattern;
import static org.intellij.plugins.intelliLang.inject.config.MethodParameterInjection.*;
import com.intellij.util.containers.ConcurrentFactoryMap;
import com.intellij.util.containers.ContainerUtil;
import gnu.trove.THashMap;
+ import gnu.trove.THashSet;
import org.intellij.plugins.intelliLang.inject.InjectorUtils;
import org.intellij.plugins.intelliLang.inject.LanguageInjectionSupport;
--import org.intellij.plugins.intelliLang.inject.config.*;
++import org.intellij.plugins.intelliLang.inject.config.BaseInjection;
++import org.intellij.plugins.intelliLang.inject.config.InjectionPlace;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
--- /dev/null
-import org.jetbrains.plugins.groovy.lang.resolve.processors.ClassHint;
+ /*
+ * 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 org.intellij.plugins.intelliLang.inject.groovy;
+
+ import com.intellij.openapi.project.Project;
+ import com.intellij.openapi.util.AtomicNotNullLazyValue;
+ import com.intellij.openapi.util.Key;
+ import com.intellij.openapi.util.UserDataHolderEx;
+ import com.intellij.psi.*;
+ import com.intellij.psi.scope.PsiScopeProcessor;
+ import org.intellij.plugins.intelliLang.PatternBasedInjectionHelper;
+ import org.intellij.plugins.intelliLang.inject.config.BaseInjection;
+ import org.jetbrains.annotations.NotNull;
+ import org.jetbrains.plugins.groovy.GroovyFileType;
+ import org.jetbrains.plugins.groovy.lang.resolve.NonCodeMembersProcessor;
+ import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil;
+
+ /**
+ * @author Gregory.Shrago
+ */
+ public class PatternEditorContextMembersProvider implements NonCodeMembersProcessor {
+
+ public static final Key<AtomicNotNullLazyValue<PsiFile>> INJECTION_PARSED_CONTEXT = Key.create("INJECTION_PARSED_CONTEXT");
+
+ public boolean processNonCodeMembers(PsiType type, PsiScopeProcessor processor, PsiElement place, boolean forCompletion) {
+ final PsiFile file = place.getContainingFile().getOriginalFile();
+ final BaseInjection injection = file.getUserData(BaseInjection.INJECTION_KEY);
+ if (injection == null) return true;
+ final PsiFile contextFile =
+ ((UserDataHolderEx)file).putUserDataIfAbsent(INJECTION_PARSED_CONTEXT, new AtomicNotNullLazyValue<PsiFile>() {
+ @NotNull
+ @Override
+ protected PsiFile compute() {
+ return parseInjectionContext(injection, file.getProject());
+ }
+ }).getValue();
+ for (PsiElement cur = contextFile.getFirstChild(); cur != null; cur = cur.getNextSibling()) {
+ if (cur instanceof PsiNamedElement && !ResolveUtil.processElement(processor, (PsiNamedElement)cur)) return false;
+ }
+ return true;
+ }
+
+ private static PsiFile parseInjectionContext(@NotNull BaseInjection injection, Project project) {
+ final String text = PatternBasedInjectionHelper.dumpContextDeclarations(injection.getSupportId());
+ return PsiFileFactory.getInstance(project).createFileFromText("context.groovy", GroovyFileType.GROOVY_FILE_TYPE, text);
+ }
+ }
package org.jetbrains.plugins.groovy.lang.psi.api.statements;
+ import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrOpenBlock;
--import org.jetbrains.annotations.Nullable;
/**
* @author ilyas
import com.intellij.psi.*;
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry;
import com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference;
-import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.tree.IElementType;
++import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PropertyUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.introduceParameter.IntroduceParameterData;
import com.intellij.refactoring.introduceParameter.IntroduceParameterMethodUsagesProcessor;
--import com.intellij.util.VisibilityUtil;
--import com.intellij.refactoring.util.usageInfo.DefaultConstructorImplicitUsageInfo;
import com.intellij.refactoring.util.javadoc.MethodJavaDocHelper;
++import com.intellij.refactoring.util.usageInfo.DefaultConstructorImplicitUsageInfo;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
++import com.intellij.util.VisibilityUtil;
import com.intellij.util.containers.MultiMap;
import gnu.trove.TIntArrayList;
import gnu.trove.TIntProcedure;
import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringBundle;
import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringUtil;
--import java.util.*;
++import java.util.HashSet;
++import java.util.Set;
/**
* @author Maxim.Medvedev
package org.jetbrains.plugins.groovy.compiler;
--import com.intellij.compiler.CompilerConfiguration;
--
--import com.intellij.openapi.module.Module;
--import com.intellij.openapi.vfs.VirtualFile;
--import com.intellij.psi.PsiFile;
--import junit.framework.AssertionFailedError;
++import com.intellij.compiler.CompilerConfiguration
++import com.intellij.openapi.module.Module
++import com.intellij.openapi.vfs.VirtualFile
++import com.intellij.psi.PsiFile
++import junit.framework.AssertionFailedError
/**
* @author peter
--- /dev/null
-import java.util.*;
++import java.util.List;
+
+ class A {
+ List <caret>method() { }
+ }
+
+ class Q implements List, Runnable {
+ }
+
+ class Z implements List {
+ }
+
+ class B extends A {
+ Q method() { }
+ }
+
+ class C extends A {
+ Z method() { }
+ }
--- /dev/null
-import java.util.*;
++import java.util.List;
+
+ class A {
+ Runnable method() { }
+ }
+
+ class Q implements List, Runnable {
+ }
+
+ class Z implements List {
+ }
+
+ class B extends A {
+ Q method() { }
+ }
+
+ class C extends A {
+ Runnable method() { }
+ }
// limitations under the License.
package org.zmlx.hg4idea;
-import com.intellij.openapi.editor.*;
-import com.intellij.openapi.fileEditor.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.zmlx.hg4idea.command.*;
-import org.zmlx.hg4idea.ui.*;
+import com.intellij.openapi.editor.Document;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.fileEditor.FileDocumentManager;
+import com.intellij.openapi.fileEditor.FileEditorManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
+import org.zmlx.hg4idea.command.HgTagBranchCommand;
++import org.zmlx.hg4idea.command.HgWorkingCopyRevisionsCommand;
+import org.zmlx.hg4idea.ui.HgCurrentBranchStatus;
-import java.util.*;
++import java.util.Collections;
++import java.util.List;
+
class HgCurrentBranchStatusUpdater implements HgUpdater {
private final HgCurrentBranchStatus hgCurrentBranchStatus;
--- /dev/null
-import com.intellij.openapi.vcs.*;
-import org.zmlx.hg4idea.command.*;
+ // Copyright 2010 Victor Iacoban
+ //
+ // 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 org.zmlx.hg4idea;
+
++import com.intellij.openapi.vcs.VcsException;
++import org.zmlx.hg4idea.command.HgCommandResult;
+
+ public abstract class HgErrorHandler {
+
+ public static HgCommandResult ensureSuccess(HgCommandResult result) throws VcsException {
+ if (fatalErrorOccurred(result)) {
+ throw new VcsException(result.getRawError());
+ }
+ return result;
+ }
+
+ private static boolean fatalErrorOccurred(HgCommandResult result) {
+ return
+ result.getExitValue() == 255 ||
+ result.getRawError().contains("** unknown exception encountered");
+ }
+
+ }
// limitations under the License.
package org.zmlx.hg4idea;
-import com.intellij.openapi.project.*;
-import org.zmlx.hg4idea.command.*;
-import org.zmlx.hg4idea.ui.*;
+import com.intellij.openapi.project.Project;
++import org.zmlx.hg4idea.command.HgVersionCommand;
+import org.zmlx.hg4idea.ui.HgSetExecutableDialog;
- import java.io.File;
-
- /**
- * Validates the 'hg' executable file, which is specified in {@link HgGlobalSettings}}.
- * Checks that the file specified exists and invokes the {@link org.zmlx.hg4idea.ui.HgSetExecutableDialog}
- * if not. The dialog provides more detailed validation.
- */
class HgExecutableValidator {
- private final Project myProject;
+ private final Project project;
public HgExecutableValidator(Project project) {
- this.myProject = project;
+ this.project = project;
}
public boolean check(HgGlobalSettings globalSettings) {
// limitations under the License.
package org.zmlx.hg4idea;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.progress.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.command.*;
-import org.zmlx.hg4idea.ui.*;
++import com.intellij.openapi.application.ApplicationManager;
++import com.intellij.openapi.progress.ProgressIndicator;
++import com.intellij.openapi.progress.Task;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vcs.ProjectLevelVcsManager;
+import com.intellij.openapi.vcs.VcsRoot;
- import com.intellij.openapi.progress.Task;
- import com.intellij.openapi.progress.ProgressIndicator;
- import com.intellij.openapi.application.ApplicationManager;
++import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.command.HgIncomingCommand;
+import org.zmlx.hg4idea.ui.HgChangesetStatus;
- import org.jetbrains.annotations.NotNull;
- import java.io.File;
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
class HgIncomingStatusUpdater implements HgUpdater {
// limitations under the License.
package org.zmlx.hg4idea;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.progress.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.command.*;
-import org.zmlx.hg4idea.ui.*;
++import com.intellij.openapi.application.ApplicationManager;
++import com.intellij.openapi.progress.ProgressIndicator;
++import com.intellij.openapi.progress.Task;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vcs.ProjectLevelVcsManager;
+import com.intellij.openapi.vcs.VcsRoot;
- import com.intellij.openapi.progress.Task;
- import com.intellij.openapi.progress.ProgressIndicator;
- import com.intellij.openapi.application.ApplicationManager;
++import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.command.HgOutgoingCommand;
+import org.zmlx.hg4idea.ui.HgChangesetStatus;
- import org.jetbrains.annotations.NotNull;
- import java.io.File;
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
class HgOutgoingStatusUpdater implements HgUpdater {
// limitations under the License.
package org.zmlx.hg4idea;
-import com.intellij.openapi.vcs.history.*;
-import org.apache.commons.lang.builder.*;
+import com.intellij.openapi.vcs.history.VcsRevisionNumber;
+import org.apache.commons.lang.builder.HashCodeBuilder;
-import java.util.*;
++import java.util.Collections;
++import java.util.List;
+
public final class HgRevisionNumber implements VcsRevisionNumber {
private final String revision;
--- /dev/null
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.project.*;
+ // Copyright 2010 Victor Iacoban
+ //
+ // 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 org.zmlx.hg4idea;
+
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
++import com.intellij.openapi.application.Application;
++import com.intellij.openapi.application.ApplicationManager;
++import com.intellij.openapi.project.Project;
+ import com.intellij.openapi.vcs.FilePath;
++import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
++import com.intellij.openapi.vfs.VirtualFile;
++import com.intellij.vcsUtil.VcsUtil;
+ import org.jetbrains.annotations.Nullable;
+
+ import java.io.*;
+
+ /**
+ * <strong><font color="#FF0000">TODO JavaDoc.</font></strong>
+ */
+ public abstract class HgUtil {
+
+ public static File copyResourceToTempFile(String basename, String extension) throws IOException {
+ final InputStream in = HgUtil.class.getClassLoader().getResourceAsStream("python/" + basename + extension);
+
+ final File tempFile = File.createTempFile(basename, extension);
+ final byte[] buffer = new byte[4096];
+
+ OutputStream out = null;
+ try {
+ out = new FileOutputStream(tempFile, false);
+ int bytesRead;
+ while ((bytesRead = in.read(buffer)) != -1)
+ out.write(buffer, 0, bytesRead);
+ } finally {
+ try {
+ out.close();
+ }
+ catch (IOException e) {
+ // ignore
+ }
+ }
+ try {
+ in.close();
+ }
+ catch (IOException e) {
+ // ignore
+ }
+ tempFile.deleteOnExit();
+ return tempFile;
+ }
+
+ public static void markDirectoryDirty( final Project project, final FilePath file ) {
+ Application application = ApplicationManager.getApplication();
+ application.runReadAction(new Runnable() {
+ public void run() {
+ VcsDirtyScopeManager.getInstance(project).dirDirtyRecursively(file);
+ }
+ } );
+ application.runWriteAction(new Runnable() {
+ public void run() {
+ VirtualFile virtualFile = VcsUtil.getVirtualFile(file.getPath());
+ if (virtualFile != null) {
+ virtualFile.refresh(true, true);
+ }
+ }
+ } );
+ }
+
+ public static void markDirectoryDirty( final Project project, final VirtualFile file ) {
+ Application application = ApplicationManager.getApplication();
+ application.runReadAction(new Runnable() {
+ public void run() {
+ VcsDirtyScopeManager.getInstance(project).dirDirtyRecursively(file);
+ }
+ } );
+ application.runWriteAction(new Runnable() {
+ public void run() {
+ file.refresh(true, true);
+ }
+ } );
+ }
+
+ public static void markFileDirty( final Project project, final FilePath file ) {
+ Application application = ApplicationManager.getApplication();
+ application.runReadAction(new Runnable() {
+ public void run() {
+ VcsDirtyScopeManager.getInstance(project).fileDirty(file);
+ }
+ } );
+ application.runWriteAction(new Runnable() {
+ public void run() {
+ VirtualFile virtualFile = VcsUtil.getVirtualFile(file.getPath());
+ if (virtualFile != null) {
+ virtualFile.refresh(true, false);
+ }
+ }
+ } );
+ }
+
+ public static void markFileDirty( final Project project, final VirtualFile file ) {
+ Application application = ApplicationManager.getApplication();
+ application.runReadAction(new Runnable() {
+ public void run() {
+ VcsDirtyScopeManager.getInstance(project).fileDirty(file);
+ }
+ } );
+ application.runWriteAction(new Runnable() {
+ public void run() {
+ file.refresh(true, false);
+ }
+ } );
+ }
+
+ /**
+ * Returns a temporary python file that will be deleted on exit.
+ *
+ * Also all compiled version of the python file will be deleted.
+ *
+ * @param base The basename of the file to copy
+ * @return The temporary copy the specified python file, with all the necessary hooks installed
+ * to make sure it is completely removed at shutdown
+ */
+ @Nullable
+ public static File getTemporaryPythonFile(String base) {
+ try {
+ final File file = copyResourceToTempFile(base, ".py");
+ final String fileName = file.getName();
+ Runtime.getRuntime().addShutdownHook(new Thread(){
+ @Override
+ public void run() {
+ File[] files = file.getParentFile().listFiles(new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ return name.startsWith(fileName);
+ }
+ });
+ if (files != null) {
+ for (File file1 : files) {
+ file1.delete();
+ }
+ }
+ }
+ });
+ return file;
+ } catch (IOException e) {
+ return null;
+ }
+ }
+ }
// limitations under the License.
package org.zmlx.hg4idea;
-import com.intellij.concurrency.*;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.fileEditor.*;
-import com.intellij.openapi.options.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.annotate.*;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.checkin.*;
-import com.intellij.openapi.vcs.diff.*;
-import com.intellij.openapi.vcs.history.*;
-import com.intellij.openapi.vcs.rollback.*;
-import com.intellij.openapi.vcs.update.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.openapi.wm.*;
-import com.intellij.util.messages.*;
+import com.intellij.concurrency.JobScheduler;
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.fileEditor.FileEditorManagerAdapter;
+import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
+import com.intellij.openapi.fileEditor.FileEditorManagerListener;
+import com.intellij.openapi.options.Configurable;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.IconLoader;
+import com.intellij.openapi.vcs.AbstractVcs;
+import com.intellij.openapi.vcs.CommittedChangesProvider;
+import com.intellij.openapi.vcs.ProjectLevelVcsManager;
++import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.annotate.AnnotationProvider;
+import com.intellij.openapi.vcs.changes.ChangeListManager;
+import com.intellij.openapi.vcs.changes.ChangeProvider;
+import com.intellij.openapi.vcs.checkin.CheckinEnvironment;
+import com.intellij.openapi.vcs.diff.DiffProvider;
+import com.intellij.openapi.vcs.history.VcsHistoryProvider;
+import com.intellij.openapi.vcs.rollback.RollbackEnvironment;
+import com.intellij.openapi.vcs.update.UpdateEnvironment;
+import com.intellij.openapi.vfs.LocalFileSystem;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.openapi.wm.StatusBar;
+import com.intellij.openapi.wm.WindowManager;
+import com.intellij.util.messages.MessageBus;
+import com.intellij.util.messages.MessageBusConnection;
+import com.intellij.util.messages.Topic;
import org.zmlx.hg4idea.provider.*;
-import org.zmlx.hg4idea.provider.annotate.*;
-import org.zmlx.hg4idea.provider.commit.*;
-import org.zmlx.hg4idea.provider.update.*;
-import org.zmlx.hg4idea.ui.*;
+import org.zmlx.hg4idea.provider.annotate.HgAnnotationProvider;
+import org.zmlx.hg4idea.provider.commit.HgCheckinEnvironment;
+import org.zmlx.hg4idea.provider.commit.HgCommitExecutor;
+import org.zmlx.hg4idea.provider.update.HgIntegrateEnvironment;
+import org.zmlx.hg4idea.provider.update.HgUpdateEnvironment;
+import org.zmlx.hg4idea.ui.HgChangesetStatus;
+import org.zmlx.hg4idea.ui.HgCurrentBranchStatus;
import javax.swing.*;
-import java.util.concurrent.*;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
public class HgVcs extends AbstractVcs {
// limitations under the License.
package org.zmlx.hg4idea;
-import com.intellij.openapi.fileTypes.*;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.fileTypes.FileTypeManager;
+import com.intellij.openapi.project.Project;
- import com.intellij.openapi.vcs.AbstractVcs;
- import com.intellij.openapi.vcs.AbstractVcsHelper;
- import com.intellij.openapi.vcs.FileStatus;
- import com.intellij.openapi.vcs.FileStatusManager;
- import com.intellij.openapi.vcs.ProjectLevelVcsManager;
- import com.intellij.openapi.vcs.VcsConfiguration;
- import com.intellij.openapi.vcs.VcsShowConfirmationOption;
- import static com.intellij.openapi.vcs.VcsShowConfirmationOption.Value.DO_ACTION_SILENTLY;
- import static com.intellij.openapi.vcs.VcsShowConfirmationOption.Value.SHOW_CONFIRMATION;
+ import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.changes.*;
+import com.intellij.openapi.vcs.changes.ChangeListManager;
- import com.intellij.openapi.vfs.VirtualFile;
- import com.intellij.openapi.vfs.VirtualFileAdapter;
- import com.intellij.openapi.vfs.VirtualFileCopyEvent;
- import com.intellij.openapi.vfs.VirtualFileEvent;
- import com.intellij.openapi.vfs.VirtualFileMoveEvent;
- import com.intellij.openapi.vfs.VirtualFilePropertyEvent;
+ import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.jetbrains.annotations.*;
+import com.intellij.vcsUtil.VcsUtil;
- import org.zmlx.hg4idea.command.HgAddCommand;
- import org.zmlx.hg4idea.command.HgCopyCommand;
- import org.zmlx.hg4idea.command.HgMoveCommand;
- import org.zmlx.hg4idea.command.HgRemoveCommand;
++import org.jetbrains.annotations.NotNull;
+ import org.zmlx.hg4idea.command.*;
-import java.io.*;
-import java.util.*;
+import java.io.File;
+import java.util.Arrays;
-import static com.intellij.openapi.vcs.VcsShowConfirmationOption.Value.*;
++import static com.intellij.openapi.vcs.VcsShowConfirmationOption.Value.DO_ACTION_SILENTLY;
++import static com.intellij.openapi.vcs.VcsShowConfirmationOption.Value.SHOW_CONFIRMATION;
+
public class HgVirtualFileListener extends VirtualFileAdapter {
private final Project project;
package org.zmlx.hg4idea.action;
import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vfs.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vcs.AbstractVcsHelper;
+import com.intellij.openapi.vcs.ProjectLevelVcsManager;
+import com.intellij.openapi.vcs.TransactionRunnable;
+import com.intellij.openapi.vcs.VcsException;
- import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
+import com.intellij.openapi.vfs.VirtualFile;
++import org.zmlx.hg4idea.HgUtil;
+import org.zmlx.hg4idea.HgVcs;
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
abstract class HgAbstractFilesAction extends AnAction {
package org.zmlx.hg4idea.action;
import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
-
-import java.util.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vcs.ProjectLevelVcsManager;
+import com.intellij.openapi.vcs.VcsRoot;
- import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
+import org.jetbrains.annotations.Nullable;
++import org.zmlx.hg4idea.HgUtil;
+import org.zmlx.hg4idea.HgVcs;
+import org.zmlx.hg4idea.command.HgCommandException;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
abstract class HgAbstractGlobalAction extends AnAction {
// limitations under the License.
package org.zmlx.hg4idea.action;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.apache.commons.lang.StringUtils;
+import org.zmlx.hg4idea.HgFile;
- import org.zmlx.hg4idea.HgRevisionNumber;
- import org.zmlx.hg4idea.command.HgHeadsCommand;
- import org.zmlx.hg4idea.command.HgMQCommand;
- import org.zmlx.hg4idea.command.HgPullCommand;
- import org.zmlx.hg4idea.command.HgRebaseCommand;
- import org.zmlx.hg4idea.command.HgResolveCommand;
- import org.zmlx.hg4idea.command.HgResolveStatusEnum;
- import org.zmlx.hg4idea.command.HgTagBranchCommand;
+ import org.zmlx.hg4idea.command.*;
-import org.zmlx.hg4idea.provider.update.*;
-import org.zmlx.hg4idea.ui.*;
+import org.zmlx.hg4idea.provider.update.HgConflictResolver;
+import org.zmlx.hg4idea.ui.HgPullDialog;
-import java.util.*;
+import java.util.Collection;
- import java.util.Collections;
- import java.util.List;
+import java.util.Map;
public class HgMqRebaseAction extends HgAbstractGlobalAction {
// limitations under the License.
package org.zmlx.hg4idea.action;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.zmlx.hg4idea.provider.update.*;
-import org.zmlx.hg4idea.ui.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
- import org.zmlx.hg4idea.HgRevisionNumber;
- import org.zmlx.hg4idea.command.HgHeadsCommand;
- import org.zmlx.hg4idea.command.HgTagBranchCommand;
+import org.zmlx.hg4idea.provider.update.HgConflictResolver;
+import org.zmlx.hg4idea.ui.HgRunConflictResolverDialog;
-import java.util.*;
+import java.util.Collection;
- import java.util.Collections;
- import java.util.List;
public class HgRunConflictResolverAction extends HgAbstractGlobalAction {
--- /dev/null
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.zmlx.hg4idea.*;
-
-import java.util.*;
+ // Copyright 2008-2010 Victor Iacoban
+ //
+ // 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 org.zmlx.hg4idea.command;
+
++import com.intellij.openapi.diagnostic.Logger;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.vfs.VirtualFile;
++import org.apache.commons.lang.StringUtils;
++import org.zmlx.hg4idea.HgRevisionNumber;
++
++import java.util.ArrayList;
++import java.util.Arrays;
++import java.util.Collections;
++import java.util.List;
+
+ /**
+ * Abstract base class for all commands that need to parse changeset information.
+ */
+ public abstract class HgChangesetsCommand {
+
+ private static final Logger LOG = Logger.getInstance(HgChangesetsCommand.class.getName());
+
+ private static final String SEPARATOR_STRING = "\u0017"; //ascii: end of transmission block
+
+ private final Project project;
+ private final String command;
+
+ public HgChangesetsCommand(Project project, String command) {
+ this.project = project;
+ this.command = command;
+ }
+
+ public List<HgRevisionNumber> execute(VirtualFile repo) {
+ return getRevisions(repo);
+ }
+
+ protected List<HgRevisionNumber> getRevisions(VirtualFile repo) {
+ HgCommandService commandService = HgCommandService.getInstance(project);
+
+
+ List<String> args = new ArrayList<String>(Arrays.asList(
+ "--template",
+ "{rev}|{node|short}|{author}|{desc|firstline}" + SEPARATOR_STRING
+ ));
+
+ addArguments(args);
+
+ HgCommandResult result = commandService.execute(
+ repo, Arrays.asList("--quiet"), command, args
+ );
+
+ String output = result.getRawOutput();
+ if (StringUtils.isEmpty(output)) {
+ return Collections.emptyList();
+ }
+
+ String[] changesets = output.split(SEPARATOR_STRING);
+ List<HgRevisionNumber> revisions = new ArrayList<HgRevisionNumber>(changesets.length);
+
+ for(String changeset: changesets) {
+ String[] parts = StringUtils.split(changeset, "|", 4);
+ if (parts.length == 4) {
+ revisions.add(HgRevisionNumber.getInstance(parts[0], parts[1], parts[2], parts[3]));
+ } else {
+ LOG.warn("Could not parse changeset [" + changeset + "]");
+ }
+ }
+
+ return revisions;
+ }
+
+ protected abstract void addArguments(List<String> args);
+ }
--- /dev/null
-import com.intellij.openapi.project.*;
+ package org.zmlx.hg4idea.command;
+
-import java.nio.charset.*;
-import java.util.*;
++import com.intellij.openapi.project.Project;
+
++import java.nio.charset.Charset;
++import java.util.Collections;
++import java.util.LinkedList;
++import java.util.List;
+
+ public class HgCloneCommand {
+ private final Project project;
+
+ private String repositoryURL;
+ private String directory;
+
+ public HgCloneCommand(Project project) {
+ this.project = project;
+ }
+
+ public String getDirectory() {
+ return directory;
+ }
+
+ public void setDirectory(String directory) {
+ this.directory = directory;
+ }
+
+ public String getRepositoryURL() {
+ return repositoryURL;
+ }
+
+ public void setRepositoryURL(String repositoryURL) {
+ this.repositoryURL = repositoryURL;
+ }
+
+ public HgCommandResult execute() {
+ List<String> arguments = new LinkedList<String>();
+ arguments.add(repositoryURL);
+ arguments.add(directory);
+
+ return HgCommandService.getInstance(project).execute(null, Collections.<String>emptyList(), "clone", arguments, Charset.defaultCharset());
+ }
+ }
--- /dev/null
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.zmlx.hg4idea.ui.*;
+ // Copyright 2008-2010 Victor Iacoban
+ //
+ // 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 org.zmlx.hg4idea.command;
+
-import java.net.*;
-import java.util.*;
++import com.intellij.openapi.application.ApplicationManager;
++import com.intellij.openapi.application.ModalityState;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.vfs.VirtualFile;
++import com.intellij.vcsUtil.VcsUtil;
++import org.zmlx.hg4idea.ui.HgUsernamePasswordDialog;
+
++import java.net.URISyntaxException;
++import java.util.List;
+
+ /**
+ * Base class for any command interacting with a remote repository and which needs authentication.
+ */
+ class HgCommandAuthenticator {
+
+ protected HgCommandResult executeCommandAndAuthenticateIfNecessary(Project project, VirtualFile localRepository, String remoteRepository, String command, List<String> arguments) {
+ HgCommandService service = HgCommandService.getInstance(project);
+ HgCommandResult result = service.execute(localRepository, command, arguments);
+ if (HgErrorUtil.isAbort(result) && HgErrorUtil.isAuthorizationRequiredAbort(result)) {
+ try {
+ HgUrl hgUrl = new HgUrl(remoteRepository);
+ if (hgUrl.supportsAuthentication()) {
+ GetPasswordRunnable runnable = new GetPasswordRunnable(project, hgUrl);
+ if (!ApplicationManager.getApplication().isDispatchThread()) {
+ ApplicationManager.getApplication().invokeAndWait(runnable, ModalityState.defaultModalityState());
+ } else {
+ runnable.run();
+ }
+
+ if ( runnable.isOk() ) {
+ hgUrl.setUsername( runnable.getUserName() );
+ hgUrl.setPassword(String.valueOf( runnable.getPassword() ));
+
+ arguments.set(arguments.size() - 1, hgUrl.asString());
+ result = service.execute(localRepository, command, arguments);
+ }
+ }
+ } catch (URISyntaxException e) {
+ VcsUtil.showErrorMessage(project, "Invalid repository: " + remoteRepository, "Error");
+ }
+ }
+ return result;
+ }
+
+ private static class GetPasswordRunnable implements Runnable {
+
+ private final HgUrl hgUrl;
+ private String userName;
+ private char[] password;
+ private Project project;
+ private boolean ok = false;
+
+ public GetPasswordRunnable(Project project, HgUrl hgUrl) {
+ this.hgUrl = hgUrl;
+ this.project = project;
+ }
+
+ public void run() {
+ HgUsernamePasswordDialog dialog = new HgUsernamePasswordDialog(project);
+ dialog.setUsername(hgUrl.getUsername());
+ dialog.show();
+
+ if (dialog.isOK()) {
+ userName = dialog.getUsername();
+ password = dialog.getPassword();
+ ok = true;
+ }
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public char[] getPassword() {
+ return password.clone();
+ }
+
+ public boolean isOk() {
+ return ok;
+ }
+ }
+
+ }
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.zmlx.hg4idea.*;
++import com.intellij.openapi.application.ApplicationManager;
++import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
- import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.HgGlobalSettings;
- import org.zmlx.hg4idea.HgVcs;
++import org.zmlx.hg4idea.HgUtil;
+import org.zmlx.hg4idea.HgVcsMessages;
-import java.io.*;
-import java.net.*;
-import java.nio.charset.*;
-import java.util.*;
+ import javax.swing.*;
+ import java.awt.*;
- import java.util.Collections;
++import java.io.DataInputStream;
++import java.io.DataOutputStream;
++import java.io.File;
++import java.io.IOException;
++import java.net.Socket;
+import java.nio.charset.Charset;
++import java.util.Arrays;
+import java.util.LinkedList;
import java.util.List;
public final class HgCommandService {
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.application.PathManager;
++import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.project.Project;
++import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vfs.VirtualFile;
- import com.intellij.openapi.diagnostic.Logger;
+import org.apache.commons.lang.StringUtils;
+import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.HgFile;
- import org.zmlx.hg4idea.HgVcsMessages;
+import org.zmlx.hg4idea.HgVcs;
++import org.zmlx.hg4idea.HgVcsMessages;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.Writer;
+ import java.io.*;
-import java.util.*;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
++import java.util.Set;
+
-import static org.zmlx.hg4idea.HgErrorHandler.*;
++import static org.zmlx.hg4idea.HgErrorHandler.ensureSuccess;
public class HgCommitCommand {
// limitations under the License.
package org.zmlx.hg4idea.command;
- import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.apache.commons.lang.StringUtils;
+import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.HgRevisionNumber;
- import java.util.ArrayList;
- import java.util.Arrays;
-import java.util.*;
+import java.util.List;
public class HgHeadsCommand {
--- /dev/null
-import com.intellij.openapi.project.*;
+ package org.zmlx.hg4idea.command;
+
-import java.nio.charset.*;
-import java.util.*;
++import com.intellij.openapi.project.Project;
+
++import java.nio.charset.Charset;
++import java.util.Collections;
++import java.util.LinkedList;
++import java.util.List;
+
+ public class HgIdentifyCommand {
+ private final Project project;
+
+ private String source;
+
+ public HgIdentifyCommand(Project project) {
+ this.project = project;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source;
+ }
+
+ public HgCommandResult execute() {
+ List<String> arguments = new LinkedList<String>();
+ arguments.add(source);
+
+ HgCommandService hgCommandService = HgCommandService.getInstance(project);
+ return hgCommandService.execute(null, Collections.<String>emptyList(), "identify", arguments, Charset.defaultCharset());
+ }
+ }
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.project.Project;
- import com.intellij.openapi.vfs.VirtualFile;
- import org.zmlx.hg4idea.HgFile;
- import java.util.Arrays;
-import java.util.*;
++import java.util.List;
- public class HgIncomingCommand extends HgRevisionsCommand {
+ public class HgIncomingCommand extends HgChangesetsCommand {
public HgIncomingCommand(Project project) {
- super(project);
+ super(project, "incoming");
}
@Override
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.zmlx.hg4idea.HgFile;
- import java.util.List;
-import java.util.*;
+import java.util.LinkedList;
++import java.util.List;
public class HgLogCommand extends HgRevisionsCommand {
-
+ private boolean includeRemoved;
private boolean followCopies;
private boolean logFile = true;
// limitations under the License.
package org.zmlx.hg4idea.command;
- import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.project.Project;
- import org.zmlx.hg4idea.HgFile;
- import java.util.Arrays;
-import java.util.*;
++import java.util.List;
- public class HgOutgoingCommand extends HgRevisionsCommand {
+ public class HgOutgoingCommand extends HgChangesetsCommand {
public HgOutgoingCommand(Project project) {
- super(project);
+ super(project, "outgoing");
}
- protected HgCommandResult execute(HgCommandService service, VirtualFile repo,
- String template, int limit, HgFile hgFile) {
- return service.execute(repo, "outgoing",
- Arrays.asList("--newest-first", "--template", template, "--limit", String.valueOf(limit)));
+ @Override
+ protected void addArguments(List<String> args) {
+ args.add("--newest-first");
}
}
--- /dev/null
-import com.intellij.openapi.project.*;
-import org.zmlx.hg4idea.*;
+ // Copyright 2008-2010 Victor Iacoban
+ //
+ // 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 org.zmlx.hg4idea.command;
+
-import java.util.*;
++import com.intellij.openapi.project.Project;
++import org.zmlx.hg4idea.HgRevisionNumber;
+
++import java.util.List;
+
+ public class HgParentsCommand extends HgChangesetsCommand{
+
+ private HgRevisionNumber revision;
+
+ public HgParentsCommand(Project project) {
+ super(project, "parents");
+ }
+
+ public void setRevision(HgRevisionNumber revision) {
+ this.revision = revision;
+ }
+
+ @Override
+ protected void addArguments(List<String> args) {
+ if (revision != null) {
+ args.add("--rev");
+ args.add(revision.getChangeset());
+ }
+ }
+ }
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
- import com.intellij.vcsUtil.VcsUtil;
+import org.apache.commons.lang.StringUtils;
+import org.jetbrains.annotations.NotNull;
- import org.zmlx.hg4idea.ui.HgUsernamePasswordDialog;
+import org.zmlx.hg4idea.HgVcs;
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
- import java.net.URISyntaxException;
public class HgPullCommand {
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-
-import java.util.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
- import com.intellij.vcsUtil.VcsUtil;
+import org.apache.commons.lang.StringUtils;
+import org.jetbrains.annotations.NotNull;
- import org.zmlx.hg4idea.ui.HgUsernamePasswordDialog;
+import org.zmlx.hg4idea.HgVcs;
+
+import java.util.LinkedList;
+import java.util.List;
- import java.net.URISyntaxException;
public class HgPushCommand {
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.project.Project;
+ import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.zmlx.hg4idea.*;
++import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.apache.commons.lang.StringUtils;
+import org.zmlx.hg4idea.HgFile;
++import org.zmlx.hg4idea.HgUtil;
- import java.io.File;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.Map;
+ import java.io.*;
-import java.net.*;
++import java.net.Socket;
+ import java.util.*;
-import java.util.concurrent.*;
++import java.util.concurrent.CountDownLatch;
++import java.util.concurrent.TimeUnit;
+
-import static org.zmlx.hg4idea.HgErrorHandler.*;
++import static org.zmlx.hg4idea.HgErrorHandler.ensureSuccess;
public class HgResolveCommand {
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.project.*;
-import org.apache.commons.lang.*;
-import org.zmlx.hg4idea.*;
-
-import java.util.*;
+import com.intellij.openapi.project.Project;
++import org.apache.commons.lang.StringUtils;
+import org.zmlx.hg4idea.HgFile;
++import org.zmlx.hg4idea.HgRevisionNumber;
+
+import java.util.Arrays;
++import java.util.LinkedList;
++import java.util.List;
public class HgRevertCommand {
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.apache.commons.lang.StringUtils;
+import org.zmlx.hg4idea.HgFile;
+import org.zmlx.hg4idea.HgFileRevision;
+import org.zmlx.hg4idea.HgRevisionNumber;
-import java.text.*;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
+ import java.util.*;
abstract class HgRevisionsCommand {
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-
-import java.io.*;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.apache.commons.lang.StringUtils;
++import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.HgFile;
++import org.zmlx.hg4idea.HgRevisionNumber;
+
+import java.io.File;
- import java.util.Collections;
- import java.util.HashSet;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Set;
+ import java.util.*;
public class HgStatusCommand {
--- /dev/null
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.zmlx.hg4idea.*;
+ // Copyright 2008-2010 Victor Iacoban
+ //
+ // 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 org.zmlx.hg4idea.command;
+
++import com.intellij.openapi.diagnostic.Logger;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.vfs.VirtualFile;
++import org.apache.commons.lang.StringUtils;
++import org.zmlx.hg4idea.HgFile;
+
+ import java.util.*;
+
+ class HgTrackFileNamesAccrossRevisionsCommand {
+
+ private static final Logger LOG = Logger.getInstance(HgTrackFileNamesAccrossRevisionsCommand.class.getName());
+ private static final String SEPARATOR_STRING = "\u0027"; //ascii: end of transmission block
+
+ private static final String TEMPLATE = "{rev}|{file_dels}|{file_copies}" + SEPARATOR_STRING;
+ private static final int ITEM_COUNT = 3;
+
+ private static final int REVISION_INDEX = 0;
+ private static final int FILES_DELETED_INDEX = 1;
+ private static final int FILES_COPIED_INDEX = 2;
+
+ private final Project project;
+
+ public HgTrackFileNamesAccrossRevisionsCommand(Project project) {
+ this.project = project;
+ }
+
+ private HgCommandResult execute(HgCommandService service, VirtualFile repo, int limit, HgFile hgFile, String currentrevision, String givenRevision) {
+ List<String> arguments = new LinkedList<String>();
+
+ arguments.add("--rev");
+ arguments.add(currentrevision + ":" + givenRevision);
+
+ arguments.add("--follow");
+ arguments.add("--template");
+ arguments.add(TEMPLATE);
+
+ if (limit != -1) {
+ arguments.add("--limit");
+ arguments.add(String.valueOf(limit));
+ }
+
+ arguments.add(hgFile.getRelativePath());
+
+ return service.execute(repo, "log", arguments);
+ }
+
+ public final String execute(HgFile hgFile, String currentRevision, String givenRevision, int limit) {
+ if (hgFile == null || hgFile.getRepo() == null) {
+ return null;
+ }
+
+ HgCommandService hgCommandService = HgCommandService.getInstance(project);
+ HgCommandResult result = execute(hgCommandService, hgFile.getRepo(), limit, hgFile, currentRevision, givenRevision);
+
+ String output = result.getRawOutput();
+ String[] changeSets = output.split(SEPARATOR_STRING);
+ String currentFileName = hgFile.getRelativePath();
+ // needed on windows machines
+ currentFileName = currentFileName.replaceAll("\\\\", "/");
+
+ for (String line : changeSets) {
+ try {
+ String[] attributes = StringUtils.splitPreserveAllTokens(line, '|');
+ if (attributes.length != ITEM_COUNT) {
+ LOG.debug("Wrong format. Skipping line " + line);
+ continue;
+ }
+
+ String revisionString = attributes[REVISION_INDEX];
+
+ if (revisionString.equals(givenRevision)) {
+ return currentFileName;
+ }
+
+ Set<String> filesDeleted;
+ Map<String, String> copies;
+
+ filesDeleted = parseFileList(attributes[FILES_DELETED_INDEX]);
+ copies = parseCopiesFileList(attributes[FILES_COPIED_INDEX]);
+ // Only keep renames, i.e. copies where the source file is also deleted.
+ Iterator<String> keys = copies.keySet().iterator();
+ while (keys.hasNext()) {
+ String s = keys.next();
+ if (!filesDeleted.contains(s)) {
+ keys.remove();
+ }
+ }
+
+ if (copies.containsValue(currentFileName)) {
+ for (String key : copies.keySet()) {
+ if (copies.get(key).equals(currentFileName)) {
+ currentFileName = key;
+ break;
+ }
+ }
+ }
+ } catch (NumberFormatException e) {
+ LOG.warn("Error parsing rev in line " + line);
+ }
+ }
+
+ return null;
+ }
+
+ private Set<String> parseFileList(String fileListString) {
+ if (StringUtils.isEmpty(fileListString)) {
+ return Collections.emptySet();
+ } else {
+ return new HashSet<String>(Arrays.asList(fileListString.split(" ")));
+ }
+ }
+
+ private Map<String, String> parseCopiesFileList(String fileListString) {
+ if (StringUtils.isEmpty(fileListString)) {
+ return Collections.emptyMap();
+ } else {
+ Map<String, String> copies = new HashMap<String, String>();
+
+ String[] filesList = fileListString.split("\\)");
+
+ for (String files : filesList) {
+ String[] file = files.split(" \\(");
+ String target = file[0];
+ String source = file[1];
+
+ copies.put(source, target);
+ }
+
+ return copies;
+ }
+ }
+ }
// limitations under the License.
package org.zmlx.hg4idea.command;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.apache.commons.lang.StringUtils;
+import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
+import org.zmlx.hg4idea.HgRevisionNumber;
-import java.util.*;
++import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
public class HgWorkingCopyRevisionsCommand {
--- /dev/null
-import java.io.*;
-import java.net.*;
+ // Copyright 2008-2010 Victor Iacoban
+ //
+ // 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 org.zmlx.hg4idea.command;
+
++import java.io.DataInputStream;
++import java.io.DataOutputStream;
++import java.io.IOException;
++import java.net.ServerSocket;
++import java.net.Socket;
++import java.net.SocketException;
+
+ /**
+ * Common server class that contains the boiler-plate code to set up a server socket.
+ * The actual logic is delegated to the Protocol instance.
+ */
+ public class SocketServer {
+ protected Thread serverThread;
+ protected ServerSocket serverSocket;
+ private final Protocol protocol;
+
+ public SocketServer(Protocol protocol) {
+ this.protocol = protocol;
+ }
+
+ public int start() throws IOException {
+ serverSocket = new ServerSocket(0);
+ int port = serverSocket.getLocalPort();
+
+ String name = "hg4idea prompt server";
+ serverThread = new Thread(name) {
+ @Override
+ public void run() {
+ try {
+ boolean _continue = true;
+ while (_continue) {
+ Socket socket = serverSocket.accept();
+ _continue = protocol.handleConnection(socket);
+ }
+ } catch (SocketException e) {
+ //socket was closed, that's OK
+ } catch (IOException e) {
+ throw new RuntimeException(e); //TODO implement catch clause
+ }
+ }
+ };
+ serverThread.start();
+
+ return port;
+ }
+
+ public void stop() {
+ serverThread.interrupt();
+ try {
+ serverSocket.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e); //TODO implement catch clause
+ }
+
+ }
+
+ public static abstract class Protocol {
+
+ /**
+ * Override this method to implement the actual logic of the protocol.
+ *
+ * @param socket The connected socket
+ * @return <code>true</code> if the server should keep listening for new incoming requests,
+ * <code>false</code> if the server handling the protocol can be shutdown.
+ *
+ * @throws IOException when the communication over the socket gives errors.
+ */
+ public abstract boolean handleConnection(Socket socket) throws IOException;
+
+ protected byte[] readDataBlock(DataInputStream inputStream) throws IOException {
+ int length = inputStream.readInt();
+ byte[] data = new byte[length];
+ inputStream.readFully(data);
+ return data;
+ }
+
+ protected void sendDataBlock(DataOutputStream out, byte[] data) throws IOException {
+ out.writeInt(data.length);
+ out.write(data);
+ }
+ }
+
+ }
// limitations under the License.
package org.zmlx.hg4idea.provider;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.project.Project;
- import com.intellij.openapi.vcs.CachingCommittedChangesProvider;
- import com.intellij.openapi.vcs.ChangeListColumn;
- import com.intellij.openapi.vcs.FilePath;
- import com.intellij.openapi.vcs.RepositoryLocation;
- import com.intellij.openapi.vcs.VcsException;
+ import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.changes.committed.*;
-import com.intellij.openapi.vcs.history.*;
-import com.intellij.openapi.vcs.versionBrowser.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.util.*;
-import com.intellij.vcsUtil.*;
-import org.apache.commons.lang.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
+import com.intellij.openapi.vcs.changes.Change;
+import com.intellij.openapi.vcs.changes.committed.DecoratorManager;
+import com.intellij.openapi.vcs.changes.committed.VcsCommittedListsZipper;
+import com.intellij.openapi.vcs.changes.committed.VcsCommittedViewAuxiliary;
+import com.intellij.openapi.vcs.history.VcsRevisionNumber;
+import com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings;
+import com.intellij.openapi.vcs.versionBrowser.ChangesBrowserSettingsEditor;
+import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.util.AsynchConsumer;
+import com.intellij.vcsUtil.VcsUtil;
+import org.apache.commons.lang.StringUtils;
+import org.jetbrains.annotations.Nls;
+import org.jetbrains.annotations.Nullable;
+import org.zmlx.hg4idea.HgContentRevision;
+import org.zmlx.hg4idea.HgFile;
+import org.zmlx.hg4idea.HgFileRevision;
+import org.zmlx.hg4idea.HgRevisionNumber;
++import org.zmlx.hg4idea.command.HgIncomingCommand;
+import org.zmlx.hg4idea.command.HgLogCommand;
- import org.zmlx.hg4idea.command.HgShowConfigCommand;
- import org.zmlx.hg4idea.command.HgWorkingCopyRevisionsCommand;
-import java.io.*;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.File;
+import java.io.IOException;
- import java.net.MalformedURLException;
- import java.util.Collection;
- import java.util.Date;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
+ import java.util.*;
public class HgCachingCommitedChangesProvider
implements CachingCommittedChangesProvider<CommittedChangeList, ChangeBrowserSettings> {
// limitations under the License.
package org.zmlx.hg4idea.provider;
-import com.intellij.openapi.progress.*;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.progress.ProgressIndicator;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.*;
+import com.intellij.openapi.vcs.FileStatus;
+import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.VcsKey;
- import com.intellij.openapi.vcs.changes.Change;
- import com.intellij.openapi.vcs.changes.ChangeListManagerGate;
- import com.intellij.openapi.vcs.changes.ChangeProvider;
- import com.intellij.openapi.vcs.changes.ChangelistBuilder;
- import com.intellij.openapi.vcs.changes.ContentRevision;
- import com.intellij.openapi.vcs.changes.VcsDirtyScope;
+ import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
++import org.zmlx.hg4idea.HgContentRevision;
+import org.zmlx.hg4idea.HgFile;
+import org.zmlx.hg4idea.HgRevisionNumber;
- import org.zmlx.hg4idea.HgContentRevision;
- import org.zmlx.hg4idea.command.HgChange;
- import org.zmlx.hg4idea.command.HgFileStatusEnum;
- import org.zmlx.hg4idea.command.HgResolveCommand;
- import org.zmlx.hg4idea.command.HgResolveStatusEnum;
- import org.zmlx.hg4idea.command.HgStatusCommand;
- import org.zmlx.hg4idea.command.HgWorkingCopyRevisionsCommand;
+ import org.zmlx.hg4idea.command.*;
- import java.util.EnumMap;
- import java.util.LinkedHashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
+ import java.util.*;
public class HgChangeProvider implements ChangeProvider {
--- /dev/null
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.fileEditor.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vfs.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
-import org.zmlx.hg4idea.ui.*;
+ /*
+ * 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 org.zmlx.hg4idea.provider;
+
-import java.io.*;
++import com.intellij.openapi.application.ApplicationManager;
++import com.intellij.openapi.fileEditor.FileDocumentManager;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.vcs.CheckoutProvider;
++import com.intellij.openapi.vfs.LocalFileSystem;
++import com.intellij.openapi.vfs.VirtualFile;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++import org.zmlx.hg4idea.HgUtil;
++import org.zmlx.hg4idea.command.HgCloneCommand;
++import org.zmlx.hg4idea.command.HgCommandResult;
++import org.zmlx.hg4idea.ui.HgCloneDialog;
+
++import java.io.File;
+
+ /**
+ * Checkout provider for Mercurial
+ */
+ public class HgCheckoutProvider implements CheckoutProvider {
+
+ /**
+ * {@inheritDoc}
+ */
+ public void doCheckout(@NotNull final Project project, @Nullable final Listener listener) {
+ ApplicationManager.getApplication().runWriteAction(new Runnable() {
+ public void run() {
+ FileDocumentManager.getInstance().saveAllDocuments();
+ }
+ });
+
+ HgCloneDialog dialog = new HgCloneDialog(project);
+ dialog.show();
+ if (!dialog.isOK()) {
+ return;
+ }
+ final VirtualFile destinationParent = LocalFileSystem.getInstance().findFileByIoFile(new File(dialog.getParentDirectory()));
+ if (destinationParent == null) {
+ return;
+ }
+ String targetDir = destinationParent.getPath() + File.separator + dialog.getDirectoryName();
+
+ final String sourceRepositoryURL = dialog.getSourceRepositoryURL();
+ HgCloneCommand clone = new HgCloneCommand(project);
+ clone.setRepositoryURL(sourceRepositoryURL);
+ clone.setDirectory(targetDir);
+ HgCommandResult result = clone.execute();
+
+ HgUtil.markDirectoryDirty(project,destinationParent);
+
+ if (result.getExitValue() == 0) {
+ if (listener != null) {
+ listener.directoryCheckedOut(new File(dialog.getParentDirectory(), dialog.getDirectoryName()));
+ }
+ }
+ if (listener != null) {
+ listener.checkoutCompleted();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getVcsName() {
+ return "_Mercurial";
+ }
+ }
- // Copyright 2008-2010 Victor Iacoban
- //
- // 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 org.zmlx.hg4idea.provider;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.versionBrowser.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.vcs.changes.Change;
+import com.intellij.openapi.vcs.versionBrowser.CommittedChangeListImpl;
+import org.zmlx.hg4idea.HgRevisionNumber;
-import java.util.*;
+import java.util.Collection;
+import java.util.Date;
- final class HgCommitedChangeList extends CommittedChangeListImpl {
+ public class HgCommitedChangeList extends CommittedChangeListImpl {
+ private HgRevisionNumber revision;
- private HgRevisionNumber revisionNumber;
-
- public HgCommitedChangeList(String comment, String committerName,
- HgRevisionNumber revisionNumber, Date date, Collection<Change> commitDate) {
- super(buildDisplayName(revisionNumber, comment),
- comment, committerName, revisionNumber.getRevisionAsInt(), date, commitDate);
- this.revisionNumber = revisionNumber;
- }
-
- public HgRevisionNumber getRevisionNumber() {
- return revisionNumber;
+ public HgCommitedChangeList(HgRevisionNumber revision, String comment, String committerName, Date commitDate, Collection<Change> changes) {
+ super(revision.asString() + ": " + comment, comment, committerName, revision.getRevisionAsLong(), commitDate, changes);
+ this.revision = revision;
}
- private static String buildDisplayName(HgRevisionNumber number, String message) {
- return number.asString() + " " + message;
+ public HgRevisionNumber getRevision() {
+ return revision;
}
-
}
// limitations under the License.
package org.zmlx.hg4idea.provider;
- import org.zmlx.hg4idea.HgFile;
- import org.jetbrains.annotations.Nullable;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.history.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
++import com.intellij.openapi.vcs.changes.CurrentBinaryContentRevision;
+import com.intellij.openapi.vcs.history.VcsRevisionNumber;
- import com.intellij.openapi.vcs.changes.BinaryContentRevision;
- import com.intellij.openapi.vcs.VcsException;
- import com.intellij.openapi.vfs.VirtualFile;
-
- import java.io.IOException;
-
- final class HgCurrentBinaryContentRevision
- extends HgCurrentContentRevision implements BinaryContentRevision {
++import org.jetbrains.annotations.NotNull;
++import org.zmlx.hg4idea.HgFile;
- private final VirtualFile virtualFile;
+ final class HgCurrentBinaryContentRevision extends CurrentBinaryContentRevision {
+ private VcsRevisionNumber revisionNumber;
- HgCurrentBinaryContentRevision(HgFile hgFile,
- VcsRevisionNumber revisionNumber, VirtualFile virtualFile) {
- super(hgFile, revisionNumber, virtualFile);
- this.virtualFile = virtualFile;
+ HgCurrentBinaryContentRevision(HgFile hgFile, VcsRevisionNumber revisionNumber) {
+ super(hgFile.toFilePath());
+ this.revisionNumber = revisionNumber;
}
- @Nullable
- public byte[] getBinaryContent() throws VcsException {
- try {
- return virtualFile.contentsToByteArray();
- } catch (IOException e) {
- throw new VcsException(e);
- }
+ @NotNull
+ @Override
+ public VcsRevisionNumber getRevisionNumber() {
+ return revisionNumber;
}
-
}
// limitations under the License.
package org.zmlx.hg4idea.provider;
- import com.intellij.openapi.application.ApplicationManager;
- import com.intellij.openapi.editor.Document;
- import com.intellij.openapi.fileEditor.FileDocumentManager;
- import com.intellij.openapi.util.Computable;
- import com.intellij.openapi.vcs.FilePath;
- import com.intellij.openapi.vcs.VcsException;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.history.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.vcs.changes.ContentRevision;
++import com.intellij.openapi.vcs.changes.CurrentContentRevision;
+import com.intellij.openapi.vcs.history.VcsRevisionNumber;
+import com.intellij.openapi.vfs.VirtualFile;
++import com.intellij.vcsUtil.VcsUtil;
+import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.HgFile;
++import org.zmlx.hg4idea.HgRevisionNumber;
- class HgCurrentContentRevision implements ContentRevision {
-
- private final HgFile hgFile;
+ class HgCurrentContentRevision extends CurrentContentRevision {
private final VcsRevisionNumber revisionNumber;
- private final VirtualFile virtualFile;
-
- private FilePath filePath;
- public HgCurrentContentRevision(HgFile hgFile,
- VcsRevisionNumber revisionNumber, VirtualFile virtualFile) {
- this.hgFile = hgFile;
+ public HgCurrentContentRevision(HgFile hgFile, VcsRevisionNumber revisionNumber, VirtualFile virtualFile) {
+ super( hgFile.toFilePath() );
this.revisionNumber = revisionNumber;
- this.virtualFile = virtualFile;
}
- public String getContent() throws VcsException {
- Document doc = ApplicationManager.getApplication().runReadAction(new Computable<Document>() {
- public Document compute() {
- return FileDocumentManager.getInstance().getDocument(virtualFile);
- }
- });
- if (doc == null) {
+ @NotNull
+ public VcsRevisionNumber getRevisionNumber() {
+ return revisionNumber;
+ }
+
+ public static ContentRevision create(HgFile hgFile, HgRevisionNumber revision) {
+ VirtualFile virtualFile = VcsUtil.getVirtualFile(hgFile.getFile());
+ if (virtualFile == null) {
return null;
}
- return doc.getText();
- }
- @NotNull
- public FilePath getFile() {
- if (filePath == null) {
- filePath = hgFile.toFilePath();
+ if (!virtualFile.getFileType().isBinary()) {
+ return new HgCurrentContentRevision(hgFile, revision, virtualFile);
}
- return filePath;
- }
- @NotNull
- public VcsRevisionNumber getRevisionNumber() {
- return revisionNumber;
+ return new HgCurrentBinaryContentRevision(hgFile, revision);
}
}
// limitations under the License.
package org.zmlx.hg4idea.provider;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.project.Project;
+ import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.diff.*;
-import com.intellij.openapi.vcs.history.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
+import com.intellij.openapi.vcs.changes.ContentRevision;
+import com.intellij.openapi.vcs.diff.DiffProvider;
+import com.intellij.openapi.vcs.diff.ItemLatestState;
+import com.intellij.openapi.vcs.history.VcsRevisionNumber;
- import com.intellij.openapi.vcs.FilePath;
+import com.intellij.openapi.vfs.VfsUtil;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
- import org.zmlx.hg4idea.HgFile;
+import org.zmlx.hg4idea.HgContentRevision;
++import org.zmlx.hg4idea.HgFile;
+import org.zmlx.hg4idea.HgRevisionNumber;
+import org.zmlx.hg4idea.command.HgWorkingCopyRevisionsCommand;
public class HgDiffProvider implements DiffProvider {
// limitations under the License.
package org.zmlx.hg4idea.provider;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.actionSystem.AnAction;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.*;
+import com.intellij.openapi.vcs.VcsException;
import com.intellij.openapi.vcs.history.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.util.ui.*;
-import com.intellij.vcsUtil.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.util.ui.ColumnInfo;
+import com.intellij.vcsUtil.VcsUtil;
++import org.jetbrains.annotations.Nullable;
+import org.zmlx.hg4idea.HgFile;
+import org.zmlx.hg4idea.HgFileRevision;
+import org.zmlx.hg4idea.command.HgLogCommand;
++import org.zmlx.hg4idea.command.HgWorkingCopyRevisionsCommand;
import javax.swing.*;
-import java.util.*;
++import java.util.Collections;
++import java.util.LinkedList;
+import java.util.List;
public class HgHistoryProvider implements VcsHistoryProvider {
// limitations under the License.
package org.zmlx.hg4idea.provider;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.rollback.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
+import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.changes.Change;
- import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
+import com.intellij.openapi.vcs.changes.ContentRevision;
++import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
+import com.intellij.openapi.vcs.rollback.RollbackEnvironment;
+import com.intellij.openapi.vcs.rollback.RollbackProgressListener;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
- import org.zmlx.hg4idea.command.HgRevertCommand;
- import org.zmlx.hg4idea.HgVcsMessages;
- import org.zmlx.hg4idea.HgFile;
+import org.jetbrains.annotations.NotNull;
++import org.zmlx.hg4idea.HgFile;
++import org.zmlx.hg4idea.HgRevisionNumber;
++import org.zmlx.hg4idea.HgVcsMessages;
++import org.zmlx.hg4idea.command.HgResolveCommand;
++import org.zmlx.hg4idea.command.HgRevertCommand;
++import org.zmlx.hg4idea.command.HgWorkingCopyRevisionsCommand;
-import java.util.*;
+import java.util.LinkedList;
+import java.util.List;
public class HgRollbackEnvironment implements RollbackEnvironment {
// limitations under the License.
package org.zmlx.hg4idea.provider.annotate;
-import com.intellij.openapi.diagnostic.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.annotate.*;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.history.*;
-import org.apache.commons.lang.*;
-import org.zmlx.hg4idea.*;
-
-import java.util.*;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.annotate.AnnotationListener;
++import com.intellij.openapi.vcs.annotate.AnnotationSourceSwitcher;
+import com.intellij.openapi.vcs.annotate.FileAnnotation;
+import com.intellij.openapi.vcs.annotate.LineAnnotationAspect;
- import com.intellij.openapi.vcs.annotate.AnnotationSourceSwitcher;
+import com.intellij.openapi.vcs.changes.CurrentContentRevision;
+import com.intellij.openapi.vcs.history.VcsFileRevision;
+import com.intellij.openapi.vcs.history.VcsRevisionNumber;
+import org.apache.commons.lang.StringUtils;
+import org.zmlx.hg4idea.HgFile;
+import org.zmlx.hg4idea.HgFileRevision;
+
+import java.util.LinkedList;
+import java.util.List;
public class HgAnnotation implements FileAnnotation {
// limitations under the License.
package org.zmlx.hg4idea.provider.annotate;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.annotate.*;
-import com.intellij.openapi.vcs.history.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.annotate.AnnotationProvider;
+import com.intellij.openapi.vcs.annotate.FileAnnotation;
- import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.history.VcsFileRevision;
- import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.openapi.vfs.VfsUtil;
- import com.intellij.openapi.project.Project;
++import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
++import org.zmlx.hg4idea.HgFile;
+import org.zmlx.hg4idea.command.HgAnnotateCommand;
+import org.zmlx.hg4idea.command.HgLogCommand;
- import org.zmlx.hg4idea.HgFile;
public class HgAnnotationProvider implements AnnotationProvider {
// limitations under the License.
package org.zmlx.hg4idea.provider.commit;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.ui.*;
-import com.intellij.openapi.vcs.*;
++import com.intellij.openapi.application.ApplicationManager;
++import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.project.Project;
++import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.vcs.CheckinProjectPanel;
import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vcs.checkin.*;
-import com.intellij.openapi.vcs.ui.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.zmlx.hg4idea.*;
+import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.changes.Change;
+import com.intellij.openapi.vcs.changes.ChangeList;
+import com.intellij.openapi.vcs.changes.ContentRevision;
+import com.intellij.openapi.vcs.checkin.CheckinEnvironment;
+import com.intellij.openapi.vcs.ui.RefreshableOnComponent;
+import com.intellij.openapi.vfs.VfsUtil;
+import com.intellij.openapi.vfs.VirtualFile;
- import com.intellij.util.NullableFunction;
- import com.intellij.util.PairConsumer;
+import com.intellij.vcsUtil.VcsUtil;
- import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.HgFile;
++import org.zmlx.hg4idea.HgRevisionNumber;
+import org.zmlx.hg4idea.HgVcsMessages;
- import org.zmlx.hg4idea.command.HgAddCommand;
- import org.zmlx.hg4idea.command.HgCommandException;
- import org.zmlx.hg4idea.command.HgCommitCommand;
- import org.zmlx.hg4idea.command.HgRemoveCommand;
+ import org.zmlx.hg4idea.command.*;
- import java.util.HashMap;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
+ import java.util.*;
public class HgCheckinEnvironment implements CheckinEnvironment {
return exceptions;
}
+ private boolean isMergeCommit(VirtualFile repo) {
+ return new HgWorkingCopyRevisionsCommand(project).parents(repo).size() > 1;
+ }
+
+ private Set<HgFile> getChangedFilesNotInCommit(VirtualFile repo, Set<HgFile> selectedFiles) {
+ List<HgRevisionNumber> parents = new HgWorkingCopyRevisionsCommand(project).parents(repo);
+
+ HgStatusCommand statusCommand = new HgStatusCommand(project);
+ statusCommand.setBaseRevision(parents.get(0));
+ statusCommand.setIncludeUnknown(false);
+ statusCommand.setIncludeIgnored(false);
+ Set<HgChange> allChangedFilesInRepo = statusCommand.execute(repo);
+
+ Set<HgFile> filesNotIncluded = new HashSet<HgFile>();
+
+ for (HgChange change : allChangedFilesInRepo) {
+ HgFile beforeFile = change.beforeFile();
+ HgFile afterFile = change.afterFile();
+ if (!selectedFiles.contains(beforeFile)) {
+ filesNotIncluded.add(beforeFile);
+ } else if (!selectedFiles.contains(afterFile)) {
+ filesNotIncluded.add(afterFile);
+ }
+ }
+ return filesNotIncluded;
+ }
+
+ private boolean mayCommitEverything(final String filesNotIncludedString) {
+ final int[] choice = new int[1];
+ Runnable runnable = new Runnable() {
+ public void run() {
+ choice[0] = Messages.showOkCancelDialog(
+ project,
+ HgVcsMessages.message("hg4idea.commit.partial.merge.message", filesNotIncludedString),
+ HgVcsMessages.message("hg4idea.commit.partial.merge.title"),
+ null
+ );
+ }
+ };
+ if (!ApplicationManager.getApplication().isDispatchThread()) {
+ ApplicationManager.getApplication().invokeAndWait(runnable, ModalityState.defaultModalityState());
+ } else {
+ runnable.run();
+ }
+ return choice[0] == 0;
+ }
+
public List<VcsException> commit(List<Change> changes,
- String preparedComment, Object parameters) {
+ String preparedComment, @NotNull NullableFunction<Object, Object> parametersHolder) {
return commit(changes, preparedComment);
}
// limitations under the License.
package org.zmlx.hg4idea.provider.commit;
-import com.intellij.openapi.project.*;
+import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.changes.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.apache.commons.lang.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
++import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.changes.Change;
+import com.intellij.openapi.vcs.changes.CommitSession;
+import com.intellij.openapi.vcs.changes.ContentRevision;
- import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
+import org.apache.commons.lang.StringUtils;
++import org.zmlx.hg4idea.HgUtil;
+import org.zmlx.hg4idea.HgVcsMessages;
+import org.zmlx.hg4idea.command.HgCommandException;
+import org.zmlx.hg4idea.command.HgCommitCommand;
- import javax.swing.JComponent;
+ import javax.swing.*;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
public class HgCommitSession implements CommitSession {
// limitations under the License.
package org.zmlx.hg4idea.provider.update;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.merge.*;
-import com.intellij.openapi.vcs.update.*;
-import com.intellij.openapi.vfs.*;
-import com.intellij.vcsUtil.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
++import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.project.Project;
- import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.vcs.AbstractVcsHelper;
+import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.merge.MergeData;
+import com.intellij.openapi.vcs.merge.MergeProvider;
+import com.intellij.openapi.vcs.update.FileGroup;
+import com.intellij.openapi.vcs.update.UpdatedFiles;
- import com.intellij.openapi.vfs.VfsUtil;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.vcsUtil.VcsUtil;
+import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.HgFile;
- import org.zmlx.hg4idea.HgRevisionNumber;
+import org.zmlx.hg4idea.HgVcs;
- import org.zmlx.hg4idea.command.HgCatCommand;
+import org.zmlx.hg4idea.command.HgResolveCommand;
+import org.zmlx.hg4idea.command.HgResolveStatusEnum;
-import java.io.*;
-import java.util.*;
+import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
public final class HgConflictResolver {
// limitations under the License.
package org.zmlx.hg4idea.provider.update;
- import com.intellij.openapi.progress.ProgressIndicator;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.vcs.*;
-import com.intellij.openapi.vcs.history.*;
-import com.intellij.openapi.vcs.update.*;
-import com.intellij.openapi.vfs.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
-
-import java.util.*;
-
-import static org.zmlx.hg4idea.HgErrorHandler.*;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vcs.VcsException;
+import com.intellij.openapi.vcs.history.VcsRevisionNumber;
- import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager;
+import com.intellij.openapi.vcs.update.FileGroup;
+import com.intellij.openapi.vcs.update.UpdatedFiles;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.jetbrains.annotations.NotNull;
+import org.zmlx.hg4idea.HgFile;
- import org.zmlx.hg4idea.HgVcsMessages;
++import org.zmlx.hg4idea.HgUtil;
+import org.zmlx.hg4idea.HgVcs;
+import org.zmlx.hg4idea.command.HgChange;
++import org.zmlx.hg4idea.command.HgCommandResult;
+import org.zmlx.hg4idea.command.HgMergeCommand;
+import org.zmlx.hg4idea.command.HgStatusCommand;
+
+import java.util.Set;
+
++import static org.zmlx.hg4idea.HgErrorHandler.ensureSuccess;
+
final class HgHeadMerger {
private final Project project;
// limitations under the License.
package org.zmlx.hg4idea.provider.update;
-import com.intellij.openapi.application.*;
-import com.intellij.openapi.options.*;
-import com.intellij.openapi.progress.*;
-import com.intellij.openapi.project.*;
-import com.intellij.openapi.util.*;
++import com.intellij.openapi.application.ApplicationManager;
++import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.options.Configurable;
+import com.intellij.openapi.progress.ProgressIndicator;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Ref;
import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.*;
+import com.intellij.openapi.vcs.VcsException;
- import com.intellij.openapi.vcs.update.SequentialUpdatesContext;
- import com.intellij.openapi.vcs.update.UpdateEnvironment;
- import com.intellij.openapi.vcs.update.UpdateSession;
- import com.intellij.openapi.vcs.update.UpdateSessionAdapter;
- import com.intellij.openapi.vcs.update.UpdatedFiles;
+ import com.intellij.openapi.vcs.update.*;
-import com.intellij.openapi.vfs.*;
-import org.apache.commons.lang.*;
-import org.jetbrains.annotations.*;
-import org.zmlx.hg4idea.*;
-import org.zmlx.hg4idea.command.*;
-import org.zmlx.hg4idea.ui.*;
-
-import java.util.*;
+import com.intellij.openapi.vfs.VirtualFile;
- import com.intellij.openapi.application.ApplicationManager;
- import com.intellij.openapi.application.ModalityState;
++import org.apache.commons.lang.StringUtils;
+import org.jetbrains.annotations.NotNull;
- import org.zmlx.hg4idea.HgVcsMessages;
+import org.zmlx.hg4idea.HgRevisionNumber;
++import org.zmlx.hg4idea.HgVcsMessages;
+import org.zmlx.hg4idea.command.HgMergeCommand;
+import org.zmlx.hg4idea.command.HgTagBranch;
- import org.zmlx.hg4idea.command.HgWorkingCopyRevisionsCommand;
+import org.zmlx.hg4idea.ui.HgIntegrateDialog;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
public class HgIntegrateEnvironment implements UpdateEnvironment {