vcs: remove some unused obsolete classes
authorKirill Likhodedov <Kirill.Likhodedov@jetbrains.com>
Fri, 18 Mar 2016 16:28:21 +0000 (19:28 +0300)
committerKirill Likhodedov <Kirill.Likhodedov@jetbrains.com>
Fri, 18 Mar 2016 16:30:04 +0000 (19:30 +0300)
The only external usage is from Scala plugin.
Developers are notified about the change.

platform/platform-resources/src/componentSets/VCS.xml
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesFragmentedDiffPanel.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FileAndDocumentListenersForShortDiff.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FragmentedContent.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FragmentedDiffRequestFromChange.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/PreparedFragmentedContent.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ShortDiffDetails.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ValueWithVcsException.java [deleted file]
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsChangeDetailsManager.java [deleted file]

index 7db8ceb7b6ca639cc9fff8b81031f3a5478c1c31..c761afb2a395cf3399a7f9824598ee6be1d9399e 100644 (file)
       <option name="workspace" value="true"/>
       <loadForDefaultProject/>
     </component>
-    <component>
-      <interface-class>com.intellij.openapi.vcs.changes.VcsChangeDetailsManager</interface-class>
-      <implementation-class>com.intellij.openapi.vcs.changes.VcsChangeDetailsManager</implementation-class>
-      <option name="workspace" value="true"/>
-    </component>
     <!-- <component>
       <implementation-class>com.intellij.openapi.vcs.changes.dbCommitted.HistoryCacheManager</implementation-class>
       <option name="workspace" value="true"/>
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesFragmentedDiffPanel.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesFragmentedDiffPanel.java
deleted file mode 100644 (file)
index 22a0a45..0000000
+++ /dev/null
@@ -1,740 +0,0 @@
-/*
- * Copyright 2000-2015 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.vcs.changes;
-
-import com.intellij.codeStyle.CodeStyleFacade;
-import com.intellij.icons.AllIcons;
-import com.intellij.openapi.Disposable;
-import com.intellij.openapi.actionSystem.*;
-import com.intellij.openapi.application.ApplicationManager;
-import com.intellij.openapi.application.ModalityState;
-import com.intellij.openapi.diff.DiffPanel;
-import com.intellij.openapi.diff.ex.DiffPanelEx;
-import com.intellij.openapi.diff.ex.DiffPanelOptions;
-import com.intellij.openapi.diff.impl.DiffPanelImpl;
-import com.intellij.openapi.diff.impl.DiffSideView;
-import com.intellij.openapi.diff.impl.IgnoreSpaceEnum;
-import com.intellij.openapi.diff.impl.fragments.Fragment;
-import com.intellij.openapi.diff.impl.fragments.FragmentList;
-import com.intellij.openapi.diff.impl.highlighting.DiffPanelState;
-import com.intellij.openapi.diff.impl.highlighting.FragmentSide;
-import com.intellij.openapi.diff.impl.highlighting.FragmentedDiffPanelState;
-import com.intellij.openapi.diff.impl.util.TextDiffTypeEnum;
-import com.intellij.openapi.editor.CaretModel;
-import com.intellij.openapi.editor.Editor;
-import com.intellij.openapi.editor.LogicalPosition;
-import com.intellij.openapi.editor.ex.EditorEx;
-import com.intellij.openapi.editor.ex.util.EditorUtil;
-import com.intellij.openapi.editor.highlighter.FragmentedEditorHighlighter;
-import com.intellij.openapi.editor.markup.TextAttributes;
-import com.intellij.openapi.fileEditor.FileEditorManager;
-import com.intellij.openapi.fileEditor.OpenFileDescriptor;
-import com.intellij.openapi.project.DumbAware;
-import com.intellij.openapi.project.DumbAwareAction;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.ui.DialogWrapper;
-import com.intellij.openapi.ui.DialogWrapperDialog;
-import com.intellij.openapi.ui.popup.JBPopup;
-import com.intellij.openapi.ui.popup.JBPopupFactory;
-import com.intellij.openapi.ui.popup.ListPopup;
-import com.intellij.openapi.util.*;
-import com.intellij.openapi.vcs.VcsConfiguration;
-import com.intellij.ui.awt.RelativePoint;
-import com.intellij.util.BeforeAfter;
-import com.intellij.util.PlatformIcons;
-import com.intellij.util.ui.UIUtil;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import java.awt.*;
-import java.awt.event.InputEvent;
-import java.awt.event.MouseEvent;
-import java.util.Hashtable;
-import java.util.List;
-
-/**
- * @author irengrig
- *         Date: 6/15/11
- *         Time: 4:00 PM
- */
-public class ChangesFragmentedDiffPanel implements Disposable {
-  private static final int SHORT_DIFF_DIVIDER_POLYGONS_OFFSET = 2;
-
-  private final JPanel myPanel;
-  private final Project myProject;
-  private final JComponent myParent;
-  private PreparedFragmentedContent myFragmentedContent;
-  private final String myFilePath;
-  private final VcsConfiguration myConfiguration;
-
-  private DiffPanel myHorizontal;
-  private DiffPanel myVertical;
-  private boolean myCurrentHorizontal;
-  private JPanel myTopPanel;
-  private List<Integer> myLeftLines;
-  private final MyNextDiffAction myNextDiff;
-  private final MyPreviousDiffAction myPreviousDiff;
-  private final JLabel myTitleLabel;
-  private ChangesFragmentedDiffPanel.PresentationState myPresentationState;
-  private DumbAwareAction myNavigateAction;
-
-  public ChangesFragmentedDiffPanel(final Project project, String filePath, JComponent parent) {
-    myProject = project;
-    myParent = parent;
-    myConfiguration = VcsConfiguration.getInstance(myProject);
-    myFilePath = filePath;
-
-    myPanel = new JPanel(new BorderLayout());
-    myNextDiff = new MyNextDiffAction();
-    myPreviousDiff = new MyPreviousDiffAction();
-    myTitleLabel = new JLabel(myFilePath);
-  }
-
-  @Override
-  public void dispose() {
-    // to remove links to editor that is in scrolling helper
-    myPanel.removeAll();
-    myHorizontal = null;
-    myVertical = null;
-    myPreviousDiff.unregisterCustomShortcutSet(myParent);
-    myNextDiff.unregisterCustomShortcutSet(myParent);
-  }
-
-  public void buildUi() {
-    myTopPanel = new JPanel(new BorderLayout());
-    final JPanel wrapper = new JPanel();
-    //final BoxLayout boxLayout = new BoxLayout(wrapper, BoxLayout.X_AXIS);
-    wrapper.setLayout(new BorderLayout());
-    myTitleLabel.setBorder(BorderFactory.createEmptyBorder(1, 2, 0, 0));
-    wrapper.add(myTitleLabel, BorderLayout.WEST);
-    DefaultActionGroup dag = new DefaultActionGroup();
-    myPreviousDiff.copyShortcutFrom(ActionManager.getInstance().getAction("PreviousDiff"));
-    myNextDiff.copyShortcutFrom(ActionManager.getInstance().getAction("NextDiff"));
-    dag.add(new MyChangeContextAction());
-    dag.add(myPreviousDiff);
-    dag.add(myNextDiff);
-    createNavigateAction();
-    dag.add(myNavigateAction);
-    myPreviousDiff.registerCustomShortcutSet(myPreviousDiff.getShortcutSet(), myPanel);
-    myNextDiff.registerCustomShortcutSet(myNextDiff.getShortcutSet(), myPanel);
-
-    dag.add(new PopupAction());
-    ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, dag, true);
-    wrapper.add(toolbar.getComponent(), BorderLayout.EAST);
-
-    myTopPanel.add(wrapper, BorderLayout.CENTER);
-
-    final JPanel wrapperDiffs = new JPanel(new GridBagLayout());
-    final JPanel oneMore = new JPanel(new BorderLayout());
-    oneMore.add(wrapperDiffs, BorderLayout.NORTH);
-
-    myCurrentHorizontal = myConfiguration.SHORT_DIFF_HORIZONTALLY;
-    myHorizontal = createPanel(true);
-    myVertical = createPanel(false);
-
-    myPanel.add(myTopPanel, BorderLayout.NORTH);
-    myPanel.add(getCurrentPanel().getComponent(), BorderLayout.CENTER);
-
-    myPreviousDiff.registerCustomShortcutSet(myPreviousDiff.getShortcutSet(), myParent);
-    myNextDiff.registerCustomShortcutSet(myNextDiff.getShortcutSet(), myParent);
-  }
-
-  private void createNavigateAction() {
-    myNavigateAction = new DumbAwareAction("Edit Source", "Edit Source", AllIcons.Actions.EditSource) {
-      @Nullable
-      private OpenFileDescriptor createDescriptor() {
-        if (myFragmentedContent == null || myFragmentedContent.getFile() == null) return null;
-
-        final DiffPanel panel = myCurrentHorizontal ? myHorizontal : myVertical;
-        final DiffSideView side = ((DiffPanelImpl)panel).getCurrentSide();
-        if (side == null || side.getEditor() == null) return null;
-
-        final boolean isAfter = FragmentSide.SIDE2.equals(side.getSide());
-        if (isAfter) {
-          final LogicalPosition position = side.getEditor().getCaretModel().getLogicalPosition();
-          final int line = position.line;
-          final int converted = myFragmentedContent.getNewConvertor().execute(line);
-          return new OpenFileDescriptor(myProject, myFragmentedContent.getFile(), converted, position.column);
-        }
-
-        if (((DiffPanelImpl)panel).getEditor1().getDocument().getTextLength() == 0) {
-          return new OpenFileDescriptor(myProject, myFragmentedContent.getFile(), 0);
-        }
-
-        final CaretModel model = side.getEditor().getCaretModel();
-        final FragmentList fragments = ((DiffPanelImpl)panel).getFragments();
-        final int line = model.getLogicalPosition().line;
-        //final int offset = side.getEditor().getDocument().getLineStartOffset(line);
-        final int offset = model.getOffset();
-
-        BeforeAfter<Integer> current = null;
-        final List<BeforeAfter<Integer>> ranges = myFragmentedContent.getLineRanges();
-        for (BeforeAfter<Integer> range : ranges) {
-          if (range.getBefore() > line) break;
-          current = range;
-        }
-        if (current == null) return null;
-        final Fragment at = fragments.getFragmentAt(offset, FragmentSide.SIDE1, Conditions.<Fragment>alwaysTrue());
-        if (at == null) return null;
-        final TextRange opposite = at.getRange(FragmentSide.SIDE2);
-
-        final int lineInNew = ((DiffPanelImpl)panel).getEditor2().getDocument().getLineNumber(opposite.getStartOffset());
-
-        int correctLine;
-        int column;
-        if (at.getType() == null || TextDiffTypeEnum.NONE.equals(at.getType())) {
-          column = model.getLogicalPosition().column;
-          final int startIn1 =
-            ((DiffPanelImpl)panel).getEditor1().getDocument().getLineNumber(at.getRange(FragmentSide.SIDE1).getStartOffset());
-          correctLine = lineInNew + line - startIn1;
-        }
-        else {
-          column = 0;
-          correctLine = Math.max(lineInNew, current.getAfter());
-        }
-
-        int converted = myFragmentedContent.getNewConvertor().execute(correctLine);
-        return new OpenFileDescriptor(myProject, myFragmentedContent.getFile(), converted, column);
-      }
-
-      @Override
-      public void actionPerformed(AnActionEvent e) {
-        if (!getEnabled()) return;
-        final OpenFileDescriptor descriptor = createDescriptor();
-        if (descriptor == null) return;
-
-        final Runnable runnable = new Runnable() {
-          @Override
-          public void run() {
-            FileEditorManager.getInstance(myProject).openTextEditor(descriptor, true);
-          }
-        };
-
-        if (ModalityState.NON_MODAL.equals(ModalityState.current())) {
-          runnable.run();
-        }
-        else {
-          final Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
-          if (window instanceof DialogWrapperDialog) {
-            final DialogWrapper wrapper = ((DialogWrapperDialog)window).getDialogWrapper();
-            if (wrapper != null) {
-              wrapper.doCancelAction();
-              ApplicationManager.getApplication().invokeLater(runnable, ModalityState.NON_MODAL, myProject.getDisposed());
-            }
-          }
-        }
-      }
-
-      @Override
-      public void update(AnActionEvent e) {
-        super.update(e);
-        final boolean enabled = getEnabled();
-        e.getPresentation().setEnabled(enabled);
-      }
-
-      private boolean getEnabled() {
-        final DiffPanel panel = myCurrentHorizontal ? myHorizontal : myVertical;
-        if (panel == null) return false;
-        final DiffSideView side = ((DiffPanelImpl)panel).getCurrentSide();
-        return side != null && side.getEditor() != null;
-      }
-    };
-  }
-
-  public void setTitle(String filePath) {
-    myTitleLabel.setText(filePath);
-  }
-
-  public void refreshData(final PreparedFragmentedContent fragmentedContent) {
-    myPresentationState = new PresentationState(myConfiguration, myCurrentHorizontal);
-    myFragmentedContent = fragmentedContent;
-
-    boolean navigationEnabled = !myFragmentedContent.isOneSide();
-    myNextDiff.setEnabled(navigationEnabled);
-    myPreviousDiff.setEnabled(navigationEnabled);
-
-    adjustPanelData((DiffPanelImpl)myHorizontal);
-    adjustPanelData((DiffPanelImpl)myVertical);
-    if (((DiffPanelImpl) myHorizontal).getEditor1() != null) {
-      myNavigateAction.registerCustomShortcutSet(CommonShortcuts.getEditSource(), ((DiffPanelImpl) myHorizontal).getEditor1().getComponent());
-      myNavigateAction.registerCustomShortcutSet(CommonShortcuts.getEditSource(), ((DiffPanelImpl) myVertical).getEditor1().getComponent());
-    }
-    if (((DiffPanelImpl) myHorizontal).getEditor2() != null) {
-      myNavigateAction.registerCustomShortcutSet(CommonShortcuts.getEditSource(), ((DiffPanelImpl) myHorizontal).getEditor2().getComponent());
-      myNavigateAction.registerCustomShortcutSet(CommonShortcuts.getEditSource(), ((DiffPanelImpl) myVertical).getEditor2().getComponent());
-    }
-
-    DiffPanel currentPanel = getCurrentPanel();
-    FragmentedDiffPanelState state = (FragmentedDiffPanelState)((DiffPanelImpl)currentPanel).getDiffPanelState();
-    myTitleLabel.setText(titleText((DiffPanelImpl)currentPanel));
-    myLeftLines = state.getLeftLines();
-
-    EditorEx hEditor1 = (EditorEx)((DiffPanelImpl)myHorizontal).getEditor1();
-    EditorEx vEditor1 = (EditorEx)((DiffPanelImpl)myVertical).getEditor1();
-    EditorEx hEditor2 = (EditorEx)((DiffPanelImpl)myHorizontal).getEditor2();
-    EditorEx vEditor2 = (EditorEx)((DiffPanelImpl)myVertical).getEditor2();
-
-    assert  hEditor1 != null;
-    assert  vEditor1 != null;
-    assert  hEditor2 != null;
-    assert  vEditor2 != null;
-
-    FragmentedEditorHighlighter bh = fragmentedContent.getBeforeHighlighter();
-    if (bh != null) {
-      hEditor1.setHighlighter(bh);
-      vEditor1.setHighlighter(bh);
-    }
-    FragmentedEditorHighlighter ah = fragmentedContent.getAfterHighlighter();
-    if (ah != null) {
-      hEditor2.setHighlighter(ah);
-      vEditor2.setHighlighter(ah);
-    }
-    if (((DiffPanelImpl) currentPanel).getEditor1() != null) {
-      highlightTodo(true, fragmentedContent.getBeforeTodoRanges());
-    }
-    if (((DiffPanelImpl) currentPanel).getEditor2() != null) {
-      highlightTodo(false, fragmentedContent.getAfterTodoRanges());
-    }
-    if (fragmentedContent.getFileType() != null && myProject != null && !myProject.isDisposed()) {
-      CodeStyleFacade codeStyleFacade = CodeStyleFacade.getInstance(myProject);
-      int tabSize = codeStyleFacade.getTabSize(fragmentedContent.getFileType());
-      boolean useTabCharacter = codeStyleFacade.useTabCharacter(fragmentedContent.getFileType());
-      hEditor1.getSettings().setTabSize(tabSize);
-      vEditor1.getSettings().setTabSize(tabSize);
-      hEditor2.getSettings().setTabSize(tabSize);
-      vEditor2.getSettings().setTabSize(tabSize);
-      hEditor1.getSettings().setUseTabCharacter(useTabCharacter);
-      vEditor1.getSettings().setUseTabCharacter(useTabCharacter);
-      hEditor2.getSettings().setUseTabCharacter(useTabCharacter);
-      vEditor2.getSettings().setUseTabCharacter(useTabCharacter);
-    }
-    ensurePresentation();
-    softWraps(myConfiguration.SOFT_WRAPS_IN_SHORT_DIFF);
-  }
-
-  private void softWraps(final boolean value) {
-    DiffPanel currentPanel = getCurrentPanel();
-    if (((DiffPanelImpl) currentPanel).getEditor1() != null) {
-      ((DiffPanelImpl) myHorizontal).getEditor1().getSettings().setUseSoftWraps(value);
-      ((DiffPanelImpl) myVertical).getEditor1().getSettings().setUseSoftWraps(value);
-    }
-    if (((DiffPanelImpl) currentPanel).getEditor2() != null) {
-      ((DiffPanelImpl) myHorizontal).getEditor2().getSettings().setUseSoftWraps(value);
-      ((DiffPanelImpl) myVertical).getEditor2().getSettings().setUseSoftWraps(value);
-    }
-  }
-
-  private void highlightTodo(boolean left, List<Pair<TextRange, TextAttributes>> todoRanges) {
-    FragmentedDiffPanelState panelState = (FragmentedDiffPanelState)((DiffPanelImpl)myHorizontal).getDiffPanelState();
-    FragmentedDiffPanelState panelState2 = (FragmentedDiffPanelState)((DiffPanelImpl)myVertical).getDiffPanelState();
-    for (Pair<TextRange, TextAttributes> range : todoRanges) {
-      TextAttributes second = range.getSecond().clone();
-      panelState.addRangeHighlighter(left, range.getFirst().getStartOffset(), range.getFirst().getEndOffset(), second);
-      panelState2.addRangeHighlighter(left, range.getFirst().getStartOffset(), range.getFirst().getEndOffset(), second);
-    }
-  }
-
-  private String titleText(DiffPanelImpl diffPanel) {
-    return myFilePath + " " + diffPanel.getNumDifferencesText();
-  }
-
-  private void adjustPanelData(final DiffPanelImpl diffPanel) {
-    final FragmentedDiffPanelState diffPanelState = (FragmentedDiffPanelState)diffPanel.getDiffPanelState();
-    diffPanelState.setRanges(myFragmentedContent.getLineRanges());
-    diffPanel.setContents(myFragmentedContent.createBeforeContent(), myFragmentedContent.createAfterContent());
-    diffPanel.setLineNumberConvertors(myFragmentedContent.getOldConvertor(), myFragmentedContent.getNewConvertor());
-    diffPanel.prefferedSizeByContents(-1);
-  }
-
-  private DiffPanel createPanel(final boolean horizontal) {
-    final DiffPanel diffPanel = new DiffPanelImpl(null, myProject, false, horizontal, SHORT_DIFF_DIVIDER_POLYGONS_OFFSET, null) {
-      @Override
-      protected DiffPanelState createDiffPanelState(@NotNull Disposable parentDisposable) {
-        return new FragmentedDiffPanelState(this, myProject, getDiffDividerPolygonsOffset(), ! horizontal, parentDisposable);
-      }
-    };
-    diffPanel.enableToolbar(false);
-    diffPanel.removeStatusBar();
-    DiffPanelOptions o = ((DiffPanelEx)diffPanel).getOptions();
-    o.setRequestFocusOnNewContent(false);
-    Disposer.register(this, diffPanel);
-    return diffPanel;
-  }
-
-  public void away() {
-    myPreviousDiff.unregisterCustomShortcutSet(myParent);
-    myNextDiff.unregisterCustomShortcutSet(myParent);
-  }
-
-  private static class PresentationState {
-    private final IgnoreSpaceEnum myIgnoreSpace;
-    private final boolean myHorizontal;
-    private final int myContextLines;
-    private final boolean mySoftWraps;
-
-    private PresentationState(@NotNull VcsConfiguration configuration, boolean currentHorizontal) {
-      myIgnoreSpace = configuration.SHORT_DIFF_IGNORE_SPACE;
-      myHorizontal = currentHorizontal;
-      myContextLines = configuration.SHORT_DIFF_EXTRA_LINES;
-      mySoftWraps = configuration.SOFT_WRAPS_IN_SHORT_DIFF;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) return true;
-      if (o == null || getClass() != o.getClass()) return false;
-
-      PresentationState that = (PresentationState)o;
-
-      if (myContextLines != that.myContextLines) return false;
-      if (myHorizontal != that.myHorizontal) return false;
-      if (mySoftWraps != that.mySoftWraps) return false;
-      if (myIgnoreSpace != that.myIgnoreSpace) return false;
-
-      return true;
-    }
-
-    @Override
-    public int hashCode() {
-      int result = myIgnoreSpace != null ? myIgnoreSpace.hashCode() : 0;
-      result = 31 * result + (myHorizontal ? 1 : 0);
-      result = 31 * result + myContextLines;
-      result = 31 * result + (mySoftWraps ? 1 : 0);
-      return result;
-    }
-  }
-
-  public void refreshPresentation() {
-    // 1. vertical 2. number of lines 3. soft wraps (4. ignore spaces)
-    PresentationState current = new PresentationState(myConfiguration, myCurrentHorizontal);
-    if (myFragmentedContent != null && ! Comparing.equal(myPresentationState, current)) {
-      recalculatePresentation();
-    }
-    else {
-      ensurePresentation();
-    }
-    myPreviousDiff.registerCustomShortcutSet(myPreviousDiff.getShortcutSet(), myParent);
-    myNextDiff.registerCustomShortcutSet(myNextDiff.getShortcutSet(), myParent);
-  }
-
-  private static final Icon ourIcon = PlatformIcons.CHECK_ICON;
-
-  private class PopupAction extends DumbAwareAction {
-    private final AnAction myUsual;
-    private final AnAction myNumbered;
-    private final ChangesFragmentedDiffPanel.MyUseSoftWrapsAction mySoftWrapsAction;
-
-    private PopupAction() {
-      super("Settings", "Settings", AllIcons.General.SecondaryGroup);
-      myUsual = new AnAction("Top | Bottom", "", AllIcons.General.Mdot_empty) {
-        @Override
-        public void actionPerformed(AnActionEvent e) {
-          myConfiguration.SHORT_DIFF_HORIZONTALLY = false;
-          ensurePresentation();
-        }
-
-        @Override
-        public void update(AnActionEvent e) {
-          super.update(e);
-          e.getPresentation().setIcon(myConfiguration.SHORT_DIFF_HORIZONTALLY ? AllIcons.General.Mdot_empty : AllIcons.General.Mdot);
-        }
-      };
-      myNumbered = new AnAction("Left | Right", "", AllIcons.General.Mdot_empty) {
-        @Override
-        public void actionPerformed(AnActionEvent e) {
-          myConfiguration.SHORT_DIFF_HORIZONTALLY = true;
-          ensurePresentation();
-        }
-
-        @Override
-        public void update(AnActionEvent e) {
-          super.update(e);
-          e.getPresentation().setIcon(myConfiguration.SHORT_DIFF_HORIZONTALLY ? AllIcons.General.Mdot : AllIcons.General.Mdot_empty);
-        }
-      };
-      mySoftWrapsAction = new MyUseSoftWrapsAction();
-    }
-
-    @Override
-    public void actionPerformed(AnActionEvent e) {
-      final DefaultActionGroup dag = new DefaultActionGroup();
-      dag.add(myUsual);
-      dag.add(myNumbered);
-      dag.add(new Separator());
-      dag.add(mySoftWrapsAction);
-      final ListPopup popup = JBPopupFactory.getInstance().createActionGroupPopup(null, dag, e.getDataContext(),
-                                                                                       JBPopupFactory.ActionSelectionAid.SPEEDSEARCH,
-                                                                                       false);
-      if (e.getInputEvent() instanceof MouseEvent) {
-        popup.show(new RelativePoint((MouseEvent)e.getInputEvent()));
-      } else {
-        // todo correct
-        /*final Dimension dimension = popup.getContent().getPreferredSize();
-        final Point at = new Point(-dimension.width / 2, 0);
-        popup.show(new RelativePoint(myParent, at));*/
-        popup.showInBestPositionFor(e.getDataContext());
-      }
-    }
-  }
-
-  /*private class MyShowSettingsButton extends ActionButton implements DumbAware {
-    MyShowSettingsButton() {
-      this(new PopupAction(), new Presentation(), ActionPlaces.CHANGES_LOCAL_DIFF_SETTINGS, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE);
-    }
-
-    MyShowSettingsButton(AnAction action, Presentation presentation, String place, @NotNull Dimension minimumSize) {
-      super(action, presentation, place, minimumSize);
-      ((PopupAction) getAction()).setParent(this);
-      myPresentation.setIcon(IconLoader.getIcon("/general/secondaryGroup.png"));
-    }
-  }*/
-
-  private void ensurePresentation() {
-    if (myCurrentHorizontal != myConfiguration.SHORT_DIFF_HORIZONTALLY) {
-      final DiffPanel panel = getCurrentPanel();
-
-      myPanel.removeAll();
-      myPanel.add(myTopPanel, BorderLayout.NORTH);
-      myPanel.add(panel.getComponent(), BorderLayout.CENTER);
-      myPanel.revalidate();
-      myPanel.repaint();
-
-      myCurrentHorizontal = myConfiguration.SHORT_DIFF_HORIZONTALLY;
-    }
-  }
-
-  private DiffPanel getCurrentPanel() {
-    DiffPanel panel;
-    if (myConfiguration.SHORT_DIFF_HORIZONTALLY) {
-      panel = myHorizontal;
-    } else {
-      panel = myVertical;
-    }
-    return panel;
-  }
-
-  private int getCurrentLogicalLineIdx(final boolean forward) {
-    assert ! myLeftLines.isEmpty();
-
-    BeforeAfter<Integer> editorLines = getEditorLines();
-    if (forward) {
-      Integer line = editorLines.getAfter();
-      if (line >= myLeftLines.get(myLeftLines.size() - 1)) {
-        return myLeftLines.size() - 1;
-      }
-      for (int i = myLeftLines.size() - 1; i >= 0; i--) {
-        Integer integer = myLeftLines.get(i);
-        if (integer <= line) return i;
-      }
-      return 0;
-    } else {
-      Integer line = editorLines.getBefore();
-      if (line <= myLeftLines.get(0)) return 0;
-      for (int i = 0; i < myLeftLines.size(); i++) {
-        Integer integer = myLeftLines.get(i);
-        if (integer >= line) {
-          return i;
-        }
-      }
-      return myLeftLines.size() - 1;
-    }
-  }
-
-  private BeforeAfter<Integer> getEditorLines() {
-    final Editor editor = ((DiffPanelImpl) getCurrentPanel()).getEditor1();
-    Rectangle visibleArea = editor.getScrollingModel().getVisibleArea();
-    final int offset = editor.getScrollingModel().getVerticalScrollOffset();
-
-    int leftPixels = offset % editor.getLineHeight();
-
-    final Point start = visibleArea.getLocation();
-    final LogicalPosition startLp = editor.xyToLogicalPosition(start);
-    final Point location = new Point(start.x + visibleArea.width, start.y + visibleArea.height);
-    final LogicalPosition lp = editor.xyToLogicalPosition(location);
-
-    int curStartLine = startLp.line == editor.getDocument().getLineCount() - 1 ? startLp.line : startLp.line + 1;
-    int cutEndLine = lp.line == 0 ? 0 : lp.line - 1;
-
-    boolean commonPartOk = leftPixels == 0 || startLp.line == lp.line;
-    return new BeforeAfter<Integer>(commonPartOk && EditorUtil.getSoftWrapCountAfterLineStart(editor, startLp) == 0 ? startLp.line : curStartLine,
-                                    commonPartOk && EditorUtil.getSoftWrapCountAfterLineStart(editor, lp) == 0 ? lp.line : cutEndLine);
-  }
-
-  private static final int[] ourMarks = {1,2,4,8,-1};
-  public static final Hashtable<Integer, JComponent> LABELS = new Hashtable<Integer, JComponent>();
-  public static final int ALL_VALUE = 5;
-
-  static {
-    LABELS.put(1, markLabel("1"));
-    LABELS.put(2, markLabel("2"));
-    LABELS.put(3, markLabel("4"));
-    LABELS.put(4, markLabel("8"));
-    LABELS.put(ALL_VALUE, markLabel("All"));
-  }
-
-  private static JLabel markLabel(final String text) {
-    JLabel label = new JLabel(text);
-    label.setFont(UIUtil.getLabelFont());
-    return label;
-  }
-
-  private class MyUseSoftWrapsAction extends ToggleAction implements DumbAware {
-    private final Icon myIcon;
-
-    private MyUseSoftWrapsAction() {
-      super("Use soft wraps", "", ourIcon);
-      myIcon = ourIcon;
-    }
-
-    @Override
-    public boolean isSelected(AnActionEvent e) {
-      return myConfiguration.SOFT_WRAPS_IN_SHORT_DIFF;
-    }
-
-    @Override
-    public void setSelected(AnActionEvent e, boolean state) {
-      myConfiguration.SOFT_WRAPS_IN_SHORT_DIFF = state;
-      softWraps(myConfiguration.SOFT_WRAPS_IN_SHORT_DIFF);
-    }
-
-    @Override
-    public void update(AnActionEvent e) {
-      super.update(e);
-      e.getPresentation().setIcon(myConfiguration.SOFT_WRAPS_IN_SHORT_DIFF ? myIcon : null);
-    }
-  }
-
-  private class MyChangeContextAction extends DumbAwareAction {
-    private MyChangeContextAction() {
-      super("More/Less Lines...", "More/Less Lines...", AllIcons.Actions.Expandall);
-    }
-
-    @Override
-    public void actionPerformed(AnActionEvent e) {
-      JPanel result = new JPanel(new BorderLayout());
-      JLabel label = new JLabel("Lines around:");
-      label.setBorder(BorderFactory.createEmptyBorder(4, 4, 0, 0));
-      JPanel wrapper = new JPanel(new BorderLayout());
-      wrapper.add(label, BorderLayout.NORTH);
-      result.add(wrapper, BorderLayout.WEST);
-      final JSlider slider = new JSlider(SwingConstants.HORIZONTAL, 1, 5, 1);
-      slider.setMinorTickSpacing(1);
-      slider.setPaintTicks(true);
-      slider.setPaintTrack(true);
-      slider.setSnapToTicks(true);
-      UIUtil.setSliderIsFilled(slider, true);
-      slider.setPaintLabels(true);
-      slider.setLabelTable(LABELS);
-      result.add(slider, BorderLayout.CENTER);
-      final VcsConfiguration configuration = VcsConfiguration.getInstance(myProject);
-      for (int i = 0; i < ourMarks.length; i++) {
-        int mark = ourMarks[i];
-        if (mark == configuration.SHORT_DIFF_EXTRA_LINES) {
-          slider.setValue(i + 1);
-        }
-      }
-      JBPopup popup = JBPopupFactory.getInstance().createComponentPopupBuilder(result, slider).createPopup();
-      popup.setFinalRunnable(new Runnable() {
-        @Override
-        public void run() {
-          int value = slider.getModel().getValue();
-          if (configuration.SHORT_DIFF_EXTRA_LINES != ourMarks[value - 1]) {
-            configuration.SHORT_DIFF_EXTRA_LINES = ourMarks[value - 1];
-            try {
-              recalculatePresentation();
-            } catch (ChangeOutdatedException e) {
-              //
-            }
-          }
-        }
-      });
-      InputEvent inputEvent = e.getInputEvent();
-      if (inputEvent instanceof MouseEvent) {
-        int width = result.getPreferredSize().width;
-        MouseEvent inputEvent1 = (MouseEvent)inputEvent;
-        Point point1 = new Point(inputEvent1.getX() - width / 2, inputEvent1.getY());
-        RelativePoint point = new RelativePoint(inputEvent1.getComponent(), point1);
-        popup.show(point);
-      } else {
-        popup.showInBestPositionFor(e.getDataContext());
-      }
-    }
-  }
-
-  private void recalculatePresentation() {
-    myFragmentedContent.recalculate();
-    refreshData(myFragmentedContent);
-  }
-
-  private class MyPreviousDiffAction extends DumbAwareAction {
-    private boolean myEnabled;
-
-    private MyPreviousDiffAction() {
-      super("Previous Change", "Previous Change", AllIcons.Actions.PreviousOccurence);
-    }
-
-    @Override
-    public void actionPerformed(AnActionEvent e) {
-      int currentLogicalLineIdx = getCurrentLogicalLineIdx(false);
-      int nextLineIdx = currentLogicalLineIdx == 0 ? 0 : currentLogicalLineIdx - 1;
-
-      DiffPanelImpl panel = (DiffPanelImpl) getCurrentPanel();
-      panel.getSideView(FragmentSide.SIDE1).scrollToFirstDiff(myLeftLines.get(nextLineIdx));
-    }
-
-    public void setEnabled(boolean enabled) {
-      myEnabled = enabled;
-    }
-
-    @Override
-    public void update(AnActionEvent e) {
-      super.update(e);
-      e.getPresentation().setEnabled(myEnabled);
-    }
-  }
-
-  private class MyNextDiffAction extends DumbAwareAction {
-    private boolean myEnabled;
-
-    private MyNextDiffAction() {
-      super("Next Change", "Next Change", AllIcons.Actions.NextOccurence);
-    }
-
-    @Override
-    public void actionPerformed(AnActionEvent e) {
-      int currentLogicalLineIdx = getCurrentLogicalLineIdx(true);
-      int nextLineIdx = currentLogicalLineIdx == myLeftLines.size() - 1 ? currentLogicalLineIdx : currentLogicalLineIdx + 1;
-
-      DiffPanelImpl panel = (DiffPanelImpl) getCurrentPanel();
-      panel.getSideView(FragmentSide.SIDE1).scrollToFirstDiff(myLeftLines.get(nextLineIdx));
-    }
-
-    public void setEnabled(boolean enabled) {
-      myEnabled = enabled;
-    }
-
-    @Override
-    public void update(AnActionEvent e) {
-      super.update(e);
-      e.getPresentation().setEnabled(myEnabled);
-    }
-  }
-
-  public JPanel getPanel() {
-    return myPanel;
-  }
-}
index 71cebba698aff0214db4b5b82cbf72126d6ca86a..e0cf0cd15186de23c251b2ec6ddca5066114b6f3 100644 (file)
@@ -108,7 +108,7 @@ public class ChangesViewManager implements ChangesViewI, JDOMExternalizable, Pro
     return PeriodicalTasksCloser.getInstance().safeGetComponent(project, ChangesViewI.class);
   }
 
-  public ChangesViewManager(Project project, ChangesViewContentManager contentManager, final VcsChangeDetailsManager vcsChangeDetailsManager) {
+  public ChangesViewManager(Project project, ChangesViewContentManager contentManager) {
     myProject = project;
     myContentManager = contentManager;
     myView = new ChangesListView(project);
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FileAndDocumentListenersForShortDiff.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FileAndDocumentListenersForShortDiff.java
deleted file mode 100644 (file)
index d4a2c8c..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2000-2014 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.vcs.changes;
-
-import com.intellij.openapi.editor.EditorFactory;
-import com.intellij.openapi.editor.event.DocumentEvent;
-import com.intellij.openapi.editor.event.DocumentListener;
-import com.intellij.openapi.fileEditor.FileDocumentManager;
-import com.intellij.openapi.vcs.FilePath;
-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 org.jetbrains.annotations.NotNull;
-
-import javax.swing.*;
-
-/**
- * Created by IntelliJ IDEA.
- * User: Irina.Chernushina
- * Date: 9/22/11
- * Time: 3:04 PM
- */
-public abstract class FileAndDocumentListenersForShortDiff {
-  private final ShortDiffDetails myDiffDetails;
-  private final FileAndDocumentListenersForShortDiff.MyFileListener myFileListener;
-  private final FileAndDocumentListenersForShortDiff.MyDocumentListener myDocumentListener;
-
-  protected FileAndDocumentListenersForShortDiff(final ShortDiffDetails diffDetails) {
-    myDiffDetails = diffDetails;
-    myFileListener = new MyFileListener();
-    myDocumentListener = new MyDocumentListener();
-  }
-
-  public void on() {
-    VirtualFileManager.getInstance().addVirtualFileListener(myFileListener);
-    EditorFactory.getInstance().getEventMulticaster().addDocumentListener(myDocumentListener);
-  }
-
-  public void off() {
-    VirtualFileManager.getInstance().removeVirtualFileListener(myFileListener);
-    EditorFactory.getInstance().getEventMulticaster().removeDocumentListener(myDocumentListener);
-  }
-
-  protected abstract void updateDetails();
-  protected abstract boolean updateSynchronously();
-
-  private class MyFileListener extends VirtualFileAdapter {
-    @Override
-    public void contentsChanged(@NotNull VirtualFileEvent event) {
-      impl(event.getFile());
-    }
-
-    @Override
-    public void fileCreated(@NotNull VirtualFileEvent event) {
-      impl(event.getFile());
-    }
-
-    @Override
-    public void fileDeleted(@NotNull VirtualFileEvent event) {
-      impl(event.getFile());
-    }
-  }
-
-  private void impl(final VirtualFile vf) {
-    final boolean wasInCache = myDiffDetails.refreshData(vf);
-    final FilePath filePath = myDiffDetails.getCurrentFilePath();
-    if (wasInCache || (filePath != null && filePath.getVirtualFile() != null && filePath.getVirtualFile().equals(vf))) {
-      updateDetails();
-    }
-  }
-
-  private class MyDocumentListener implements DocumentListener {
-    private final FileDocumentManager myFileDocumentManager;
-
-    public MyDocumentListener() {
-      myFileDocumentManager = FileDocumentManager.getInstance();
-    }
-
-    @Override
-    public void beforeDocumentChange(DocumentEvent event) {
-    }
-
-    @Override
-    public void documentChanged(DocumentEvent event) {
-      final VirtualFile vf = myFileDocumentManager.getFile(event.getDocument());
-      if (vf != null) {
-        final FilePath filePath = myDiffDetails.getCurrentFilePath();
-        if (filePath != null && filePath.getVirtualFile() != null && filePath.getVirtualFile().equals(vf)) {
-          SwingUtilities.invokeLater(new Runnable() {
-            @Override
-            public void run() {
-              if (! updateSynchronously()) {
-                impl(vf);
-              }
-            }
-          });
-        } else {
-          impl(vf);
-        }
-      }
-    }
-  }
-}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FragmentedContent.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FragmentedContent.java
deleted file mode 100644 (file)
index f81c506..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 2000-2011 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.vcs.changes;
-
-import com.intellij.openapi.editor.Document;
-import com.intellij.openapi.fileTypes.FileType;
-import com.intellij.openapi.util.TextRange;
-import com.intellij.openapi.vcs.FileStatus;
-import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.util.BeforeAfter;
-
-import java.util.List;
-
-/**
- * @author irengrig
- *         Date: 7/6/11
- *         Time: 8:46 PM
- */
-public class FragmentedContent {
-  private final Document myBefore;
-  private final Document myAfter;
-  private final List<BeforeAfter<TextRange>> myRanges;
-
-  private final boolean myOneSide;
-  private final boolean myIsAddition;
-
-  private final VirtualFile myFileBefore;
-  private final VirtualFile myFileAfter;
-  private final FileType myFileTypeBefore;
-  private final FileType myFileTypeAfter;
-
-  public FragmentedContent(Document before, Document after, List<BeforeAfter<TextRange>> ranges, Change change) {
-    myBefore = before;
-    myAfter = after;
-    myRanges = ranges;
-
-    final FileStatus fs = change.getFileStatus();
-    myIsAddition = FileStatus.ADDED.equals(fs);
-    myOneSide = FileStatus.ADDED.equals(fs) || FileStatus.DELETED.equals(fs);
-
-    if (change.getBeforeRevision() != null) {
-      myFileBefore = change.getBeforeRevision().getFile().getVirtualFile();
-      myFileTypeBefore = change.getBeforeRevision().getFile().getFileType();
-    }
-    else {
-      myFileBefore = null;
-      myFileTypeBefore = null;
-    }
-
-    if (change.getAfterRevision() != null) {
-      myFileAfter = change.getAfterRevision().getFile().getVirtualFile();
-      myFileTypeAfter = change.getAfterRevision().getFile().getFileType();
-    }
-    else {
-      myFileAfter = null;
-      myFileTypeAfter = null;
-    }
-  }
-
-  public Document getBefore() {
-    return myBefore;
-  }
-
-  public Document getAfter() {
-    return myAfter;
-  }
-
-  public List<BeforeAfter<TextRange>> getRanges() {
-    return myRanges;
-  }
-
-  public int getSize() {
-    return myRanges.size();
-  }
-
-  public boolean isOneSide() {
-    return myOneSide;
-  }
-
-  public boolean isAddition() {
-    return myIsAddition;
-  }
-
-  public VirtualFile getFileBefore() {
-    return myFileBefore;
-  }
-
-  public VirtualFile getFileAfter() {
-    return myFileAfter;
-  }
-
-  public FileType getFileTypeBefore() {
-    return myFileTypeBefore;
-  }
-
-  public FileType getFileTypeAfter() {
-    return myFileTypeAfter;
-  }
-}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FragmentedDiffRequestFromChange.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/FragmentedDiffRequestFromChange.java
deleted file mode 100644 (file)
index 0b89cc5..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright 2000-2015 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.vcs.changes;
-
-import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.diff.impl.external.DiffManagerImpl;
-import com.intellij.openapi.diff.impl.fragments.LineFragment;
-import com.intellij.openapi.diff.impl.highlighting.FragmentSide;
-import com.intellij.openapi.diff.impl.processing.TextCompareProcessor;
-import com.intellij.openapi.editor.Document;
-import com.intellij.openapi.editor.impl.DocumentImpl;
-import com.intellij.openapi.fileEditor.FileDocumentManager;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Pair;
-import com.intellij.openapi.util.TextRange;
-import com.intellij.openapi.util.UnfairTextRange;
-import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.FileStatus;
-import com.intellij.openapi.vcs.VcsException;
-import com.intellij.openapi.vcs.changes.actions.ShowDiffAction;
-import com.intellij.openapi.vcs.ex.Range;
-import com.intellij.openapi.vcs.impl.LineStatusTrackerManager;
-import com.intellij.openapi.vcs.impl.LineStatusTrackerManagerI;
-import com.intellij.openapi.vfs.LocalFileSystem;
-import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.util.BeforeAfter;
-import com.intellij.util.containers.SLRUMap;
-import com.intellij.util.diff.FilesTooBigForDiffException;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author irengrig
- *         Date: 6/15/11
- *         Time: 6:02 PM
- */
-public class FragmentedDiffRequestFromChange {
-  private final Project myProject;
-  private final SLRUMap<Pair<Long, String>, List<BeforeAfter<TextRange>>> myRangesCache;
-  private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.changes.FragmentedDiffRequestFromChange");
-
-  public FragmentedDiffRequestFromChange(Project project) {
-    myProject = project;
-    myRangesCache = new SLRUMap<Pair<Long, String>, List<BeforeAfter<TextRange>>>(10, 10);
-  }
-
-  public static boolean canCreateRequest(Change change) {
-    if (ChangesUtil.isTextConflictingChange(change) || change.isTreeConflict() || change.isPhantom()) return false;
-    if (ShowDiffAction.isBinaryChange(change)) return false;
-    final FilePath filePath = ChangesUtil.getFilePath(change);
-    if (filePath.isDirectory()) return false;
-    return true;
-  }
-
-  public PreparedFragmentedContent getRanges(Change change) throws VcsException {
-    FilePath filePath = ChangesUtil.getFilePath(change);
-
-    final RangesCalculator calculator = new RangesCalculator();
-    calculator.execute(change, filePath, myRangesCache, LineStatusTrackerManager.getInstance(myProject));
-    final VcsException exception = calculator.getException();
-    if (exception != null) {
-      LOG.info(exception);
-      throw exception;
-    }
-    List<BeforeAfter<TextRange>> ranges = calculator.getRanges();
-    if (ranges == null || ranges.isEmpty()) return null;
-    FragmentedContent fragmentedContent = new FragmentedContent(calculator.getOldDocument(), calculator.getDocument(), ranges, change);
-    VirtualFile file = filePath.getVirtualFile();
-    if (file == null) {
-      file = LocalFileSystem.getInstance().refreshAndFindFileByPath(filePath.getPath());
-    }
-    return new PreparedFragmentedContent(myProject, fragmentedContent,
-                                    filePath.getName(), filePath.getFileType(),
-                                    change.getBeforeRevision() == null ? null : change.getBeforeRevision().getRevisionNumber(),
-                                    change.getAfterRevision() == null ? null : change.getAfterRevision().getRevisionNumber(), filePath, file);
-  }
-
-  private static class RangesCalculator {
-    private List<BeforeAfter<TextRange>> myRanges;
-    private VcsException myException;
-    private Document myDocument;
-    private Document myOldDocument;
-
-    public Document getDocument() {
-      return myDocument;
-    }
-
-    public Document getOldDocument() {
-      return myOldDocument;
-    }
-
-    public void execute(final Change change,
-                        final FilePath filePath,
-                        final SLRUMap<Pair<Long, String>, List<BeforeAfter<TextRange>>> cache,
-                        final LineStatusTrackerManagerI lstManager) {
-      try {
-        myDocument = null;
-        myOldDocument = documentFromRevision(change.getBeforeRevision());
-        final String convertedPath = FilePathsHelper.convertPath(filePath);
-        if (filePath.getVirtualFile() != null) {
-          myDocument = FileStatus.DELETED.equals(change.getFileStatus())
-                       ? new DocumentImpl("")
-                       : FileDocumentManager.getInstance().getDocument(filePath.getVirtualFile());
-          if (myDocument != null) {
-            final List<BeforeAfter<TextRange>> cached = cache.get(new Pair<Long, String>(myDocument.getModificationStamp(), convertedPath));
-            if (cached != null) {
-              myRanges = cached;
-              return;
-            }
-          }
-        }
-
-        if (myDocument == null) {
-          myDocument = documentFromRevision(change.getAfterRevision());
-          final List<BeforeAfter<TextRange>> cached = cache.get(new Pair<Long, String>(-1L, convertedPath));
-          if (cached != null) {
-            myRanges = cached;
-            return;
-          }
-        }
-
-        TextCompareProcessor processor = new TextCompareProcessor(DiffManagerImpl.getInstanceEx().getComparisonPolicy());
-        List<LineFragment> lineFragments = processor.process(myOldDocument.getText(), myDocument.getText());
-        myRanges = new ArrayList<BeforeAfter<TextRange>>(lineFragments.size());
-        for (LineFragment lineFragment : lineFragments) {
-          if (!lineFragment.isEqual()) {
-            final TextRange oldRange = lineFragment.getRange(FragmentSide.SIDE1);
-            final TextRange newRange = lineFragment.getRange(FragmentSide.SIDE2);
-            int beforeBegin = myOldDocument.getLineNumber(oldRange.getStartOffset());
-            int beforeEnd = myOldDocument.getLineNumber(correctRangeEnd(oldRange.getEndOffset(), myOldDocument));
-            int afterBegin = myDocument.getLineNumber(newRange.getStartOffset());
-            int afterEnd = myDocument.getLineNumber(correctRangeEnd(newRange.getEndOffset(), myDocument));
-            if (oldRange.isEmpty()) {
-              beforeEnd = beforeBegin - 1;
-            }
-            if (newRange.isEmpty()) {
-              afterEnd = afterBegin - 1;
-            }
-            myRanges
-              .add(new BeforeAfter<TextRange>(new UnfairTextRange(beforeBegin, beforeEnd), new UnfairTextRange(afterBegin, afterEnd)));
-          }
-        }
-        cache
-          .put(new Pair<Long, String>(myDocument.getModificationStamp(), convertedPath), new ArrayList<BeforeAfter<TextRange>>(myRanges));
-      }
-      catch (VcsException e) {
-        myException = e;
-      }
-      catch (FilesTooBigForDiffException e) {
-        myException = new VcsException(e);
-      }
-    }
-    
-    private static int correctRangeEnd(final int end, final Document document) {
-      if (end == 0) return end;
-      return "\n".equals(document.getText(new TextRange(end - 1, end))) ? end - 1 : end;
-    }
-
-    public List<BeforeAfter<TextRange>> getRanges() {
-      return myRanges;
-    }
-
-    public VcsException getException() {
-      return myException;
-    }
-
-    private static Document documentFromRevision(final ContentRevision cr) throws VcsException {
-      final Document oldDocument = new DocumentImpl(StringUtil.convertLineSeparators(notNullContentRevision(cr)),true);
-      // todo !!! a question how to show line separators in diff etc
-      // todo currently document doesn't allow to put \r as separator
-      oldDocument.setReadOnly(true);
-      return oldDocument;
-    }
-
-    private static String notNullContentRevision(final ContentRevision cr) throws VcsException {
-      if (cr == null) return "";
-      String content = cr.getContent();
-      return content == null ? "" : content;
-    }
-  }
-
-  private static class MyWorker {
-    private final Document myDocument;
-    private final Document myOldDocument;
-    private final List<Range> myRanges;
-
-    private MyWorker(Document document, Document oldDocument, final List<Range> ranges) {
-      myDocument = document;
-      myOldDocument = oldDocument;
-      myRanges = ranges;
-    }
-
-    @Nullable
-    public List<BeforeAfter<TextRange>> execute() {
-      final List<BeforeAfter<TextRange>> result = new ArrayList<BeforeAfter<TextRange>>();
-      if (myRanges == null || myRanges.isEmpty()) return Collections.emptyList();
-      for (Range range : myRanges) {
-        final TextRange before = new TextRange(range.getVcsLine1(), range.getVcsLine2());
-        final TextRange after = new TextRange(range.getLine1(), range.getLine2());
-        result.add(new BeforeAfter<TextRange>(before, after));
-      }
-      return result;
-    }
-  }
-}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/PreparedFragmentedContent.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/PreparedFragmentedContent.java
deleted file mode 100644 (file)
index 2722239..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- * Copyright 2000-2011 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.vcs.changes;
-
-import com.intellij.openapi.application.ApplicationManager;
-import com.intellij.openapi.diff.DiffContent;
-import com.intellij.openapi.diff.SimpleContent;
-import com.intellij.openapi.diff.impl.DiffHighlighterFactory;
-import com.intellij.openapi.diff.impl.DiffHighlighterFactoryImpl;
-import com.intellij.openapi.editor.Document;
-import com.intellij.openapi.editor.colors.EditorColorsManager;
-import com.intellij.openapi.editor.highlighter.*;
-import com.intellij.openapi.editor.markup.TextAttributes;
-import com.intellij.openapi.fileTypes.FileType;
-import com.intellij.openapi.fileTypes.SyntaxHighlighter;
-import com.intellij.openapi.fileTypes.SyntaxHighlighterFactory;
-import com.intellij.openapi.project.DumbService;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Getter;
-import com.intellij.openapi.util.Pair;
-import com.intellij.openapi.util.TextRange;
-import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.ProjectLevelVcsManager;
-import com.intellij.openapi.vcs.VcsConfiguration;
-import com.intellij.openapi.vcs.history.VcsRevisionNumber;
-import com.intellij.openapi.vcs.impl.ContentRevisionCache;
-import com.intellij.openapi.vfs.LocalFileSystem;
-import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.util.BeforeAfter;
-import com.intellij.util.Consumer;
-import com.intellij.util.continuation.ModalityIgnorantBackgroundableTask;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.ListIterator;
-
-/**
-* Created by IntelliJ IDEA.
-* User: Irina.Chernushina
-* Date: 9/8/11
-* Time: 1:19 PM
-*/
-public class PreparedFragmentedContent {
-  private LineNumberConvertor oldConvertor;
-  private LineNumberConvertor newConvertor;
-  private StringBuilder sbOld;
-  private StringBuilder sbNew;
-  private List<TextRange> myBeforeFragments;
-  private List<TextRange> myAfterFragments;
-  private List<BeforeAfter<Integer>> myLineRanges;
-  private boolean myOneSide;
-  private boolean myIsAddition;
-
-  private FragmentedEditorHighlighter myBeforeHighlighter;
-  private FragmentedEditorHighlighter myAfterHighlighter;
-  private List<Pair<TextRange, TextAttributes>> myBeforeTodoRanges;
-  private List<Pair<TextRange, TextAttributes>> myAfterTodoRanges;
-  private final Project myProject;
-  private final FragmentedContent myFragmentedContent;
-  private final String myFileName;
-  private final FileType myFileType;
-  private final VcsRevisionNumber myBeforeNumber;
-  private final VcsRevisionNumber myAfterNumber;
-  private VirtualFile myFile;
-  private FilePath myFilePath;
-
-  public PreparedFragmentedContent(final Project project, final FragmentedContent fragmentedContent, final String fileName,
-                                   final FileType fileType,
-                                   VcsRevisionNumber beforeNumber,
-                                   VcsRevisionNumber afterNumber,
-                                   FilePath path,
-                                   VirtualFile file) {
-    myFile = file;
-    myProject = project;
-    myFragmentedContent = fragmentedContent;
-    myFileName = fileName;
-    myFileType = fileType;
-    myBeforeNumber = beforeNumber;
-    myAfterNumber = afterNumber;
-    myFilePath = path;
-    oldConvertor = new LineNumberConvertor();
-    newConvertor = new LineNumberConvertor();
-    sbOld = new StringBuilder();
-    sbNew = new StringBuilder();
-    myBeforeFragments = new ArrayList<TextRange>(fragmentedContent.getSize());
-    myAfterFragments = new ArrayList<TextRange>(fragmentedContent.getSize());
-    myLineRanges = new ArrayList<BeforeAfter<Integer>>();
-    fromFragmentedContent(fragmentedContent);
-  }
-
-  public void recalculate() {
-    oldConvertor = new LineNumberConvertor();
-    newConvertor = new LineNumberConvertor();
-    sbOld = new StringBuilder();
-    sbNew = new StringBuilder();
-    myBeforeFragments = new ArrayList<TextRange>(myFragmentedContent.getSize());
-    myAfterFragments = new ArrayList<TextRange>(myFragmentedContent.getSize());
-    myLineRanges = new ArrayList<BeforeAfter<Integer>>();
-    checkFileOutdated();
-    fromFragmentedContent(myFragmentedContent);
-  }
-
-  private void checkFileOutdated() {
-    if (myOneSide) {
-      if (myIsAddition) {
-        if (myFile == null || ! myFile.isValid()) {
-          throw new ChangeOutdatedException();
-        }
-      }
-    } else {
-      if (myFile == null || ! myFile.isValid()) {
-        throw new ChangeOutdatedException();
-      }
-    }
-  }
-
-  private void fromFragmentedContent(final FragmentedContent fragmentedContent) {
-    ApplicationManager.getApplication().runReadAction(new Runnable() { // todo
-      @Override
-      public void run() {
-        if (DumbService.isDumb(myProject)) {
-          throw new ModalityIgnorantBackgroundableTask.ToBeRepeatedException();
-        }
-
-        myOneSide = fragmentedContent.isOneSide();
-        myIsAddition = fragmentedContent.isAddition();
-        List<BeforeAfter<TextRange>> expandedRanges =
-          expand(fragmentedContent.getRanges(), VcsConfiguration.getInstance(myProject).SHORT_DIFF_EXTRA_LINES,
-                 fragmentedContent.getBefore(), fragmentedContent.getAfter());
-        // add "artificial" empty lines
-
-        final Document document = fragmentedContent.getBefore();
-        final Document document1 = fragmentedContent.getAfter();
-
-        // line starts
-        BeforeAfter<Integer> lines = new BeforeAfter<Integer>(0, 0);
-        for (BeforeAfter<TextRange> lineNumbers : expandedRanges) {
-          if (lines.getBefore() > 0 || lines.getAfter() > 0) {
-            oldConvertor.emptyLine(lines.getBefore());
-            newConvertor.emptyLine(lines.getAfter());
-            lines = new BeforeAfter<Integer>(lines.getBefore() + 1, lines.getAfter() + 1);
-            sbOld.append('\n');
-            sbNew.append('\n');
-          }
-
-          myLineRanges.add(lines);
-          oldConvertor.put(lines.getBefore(), lineNumbers.getBefore().getStartOffset());
-          newConvertor.put(lines.getAfter(), lineNumbers.getAfter().getStartOffset());
-
-          if (sbOld.length() > 0) {
-            sbOld.append('\n');
-          }
-          final TextRange beforeRange = new TextRange(document.getLineStartOffset(lineNumbers.getBefore().getStartOffset()),
-                                                      document.getLineEndOffset(lineNumbers.getBefore().getEndOffset()));
-          myBeforeFragments.add(beforeRange);
-          sbOld.append(document.getText(beforeRange));
-
-          if (sbNew.length() > 0) {
-            sbNew.append('\n');
-          }
-          final TextRange afterRange = new TextRange(document1.getLineStartOffset(lineNumbers.getAfter().getStartOffset()),
-                                                     document1.getLineEndOffset(lineNumbers.getAfter().getEndOffset()));
-          myAfterFragments.add(afterRange);
-          sbNew.append(document1.getText(afterRange));
-
-          int before = lines.getBefore() + lineNumbers.getBefore().getEndOffset() - lineNumbers.getBefore().getStartOffset() + 1;
-          int after = lines.getAfter() + lineNumbers.getAfter().getEndOffset() - lineNumbers.getAfter().getStartOffset() + 1;
-          lines = new BeforeAfter<Integer>(before, after);
-        }
-        myLineRanges.add(new BeforeAfter<Integer>(lines.getBefore() == 0 ? 0 : lines.getBefore() - 1,
-                                                  lines.getAfter() == 0 ? 0 : lines.getAfter() - 1));
-
-        if (!expandedRanges.isEmpty()) {
-          BeforeAfter<TextRange> last = expandedRanges.get(expandedRanges.size() - 1);
-          if (sbOld.length() > 0) {
-            if (document.getLineEndOffset(last.getBefore().getEndOffset()) != document.getTextLength()) {
-              sbOld.append('\n');
-              oldConvertor.emptyLine(lines.getBefore());
-            }
-          }
-          if (sbNew.length() > 0) {
-            if (document1.getLineEndOffset(last.getAfter().getEndOffset()) != document1.getTextLength()) {
-              sbNew.append('\n');
-              newConvertor.emptyLine(lines.getAfter());
-            }
-          }
-        }
-
-        setHighlighters(fragmentedContent.getBefore(), fragmentedContent.getAfter(), expandedRanges, fragmentedContent);
-        setTodoHighlighting(fragmentedContent.getBefore(), fragmentedContent.getAfter());
-      }
-    });
-  }
-
-  public LineNumberConvertor getOldConvertor() {
-    return oldConvertor;
-  }
-
-  public LineNumberConvertor getNewConvertor() {
-    return newConvertor;
-  }
-
-  public DiffContent createBeforeContent() {
-    if (isAddition()) {
-      return SimpleContent.createEmpty();
-    }
-    return new SimpleContent(getSbOld().toString());
-  }
-
-  public DiffContent createAfterContent() {
-    if (isDeletion()) {
-      return SimpleContent.createEmpty();
-    }
-    return new SimpleContent(getSbNew().toString());
-  }
-
-  public StringBuilder getSbOld() {
-    return sbOld;
-  }
-
-  public StringBuilder getSbNew() {
-    return sbNew;
-  }
-
-  public List<TextRange> getBeforeFragments() {
-    return myBeforeFragments;
-  }
-
-  public List<TextRange> getAfterFragments() {
-    return myAfterFragments;
-  }
-
-  public List<BeforeAfter<Integer>> getLineRanges() {
-    return myLineRanges;
-  }
-
-  public boolean isOneSide() {
-    return myOneSide;
-  }
-
-  public boolean isAddition() {
-    return myOneSide && myIsAddition;
-  }
-
-  public boolean isDeletion() {
-    return myOneSide && ! myIsAddition;
-  }
-
-  public FragmentedEditorHighlighter getBeforeHighlighter() {
-    return myBeforeHighlighter;
-  }
-
-  public void setBeforeHighlighter(FragmentedEditorHighlighter beforeHighlighter) {
-    myBeforeHighlighter = beforeHighlighter;
-  }
-
-  public FragmentedEditorHighlighter getAfterHighlighter() {
-    return myAfterHighlighter;
-  }
-
-  public void setAfterHighlighter(FragmentedEditorHighlighter afterHighlighter) {
-    myAfterHighlighter = afterHighlighter;
-  }
-
-  public boolean isEmpty() {
-    return myLineRanges.isEmpty();
-  }
-
-  public void setAfterTodoRanges(List<Pair<TextRange, TextAttributes>> afterTodoRanges) {
-    myAfterTodoRanges = afterTodoRanges;
-  }
-
-  public List<Pair<TextRange, TextAttributes>> getBeforeTodoRanges() {
-    return myBeforeTodoRanges;
-  }
-
-  public List<Pair<TextRange, TextAttributes>> getAfterTodoRanges() {
-    return myAfterTodoRanges;
-  }
-
-  public void setBeforeTodoRanges(List<Pair<TextRange, TextAttributes>> beforeTodoRanges) {
-    myBeforeTodoRanges = beforeTodoRanges;
-  }
-
-  public static List<BeforeAfter<TextRange>> expand(List<BeforeAfter<TextRange>> myRanges, final int lines, final Document oldDocument,
-                                                    final Document document) {
-    if (myRanges == null || myRanges.isEmpty()) return Collections.emptyList();
-    if (lines == -1) {
-      final List<BeforeAfter<TextRange>> shiftedRanges = new ArrayList<BeforeAfter<TextRange>>(1);
-      shiftedRanges.add(new BeforeAfter<TextRange>(new TextRange(0, oldDocument.getLineCount() == 0 ? 0 : oldDocument.getLineCount() - 1),
-                                                   new TextRange(0, document.getLineCount() == 0 ? 0 : document.getLineCount() - 1)));
-      return shiftedRanges;
-    }
-    final List<BeforeAfter<TextRange>> shiftedRanges = new ArrayList<BeforeAfter<TextRange>>(myRanges.size());
-    final int oldLineCount = oldDocument.getLineCount();
-    final int lineCount = document.getLineCount();
-
-    for (BeforeAfter<TextRange> range : myRanges) {
-      final TextRange newBefore = expandRange(range.getBefore(), lines, oldLineCount);
-      final TextRange newAfter = expandRange(range.getAfter(), lines, lineCount);
-      shiftedRanges.add(new BeforeAfter<TextRange>(newBefore, newAfter));
-    }
-
-    // and zip
-    final List<BeforeAfter<TextRange>> zippedRanges = new ArrayList<BeforeAfter<TextRange>>(myRanges.size());
-    final ListIterator<BeforeAfter<TextRange>> iterator = shiftedRanges.listIterator();
-    BeforeAfter<TextRange> previous = iterator.next();
-    while (iterator.hasNext()) {
-      final BeforeAfter<TextRange> current = iterator.next();
-      if (neighbourOrIntersect(previous.getBefore(), current.getBefore()) ||
-          neighbourOrIntersect(previous.getAfter(), current.getAfter())) {
-        previous = new BeforeAfter<TextRange>(previous.getBefore().union(current.getBefore()),
-                                              previous.getAfter().union(current.getAfter()));
-      } else {
-        zippedRanges.add(previous);
-        previous = current;
-      }
-    }
-    zippedRanges.add(previous);
-    return zippedRanges;
-  }
-
-  private static boolean neighbourOrIntersect(final TextRange a, final TextRange b) {
-    return a.getEndOffset() + 1 == b.getStartOffset() || a.intersects(b);
-  }
-
-  private static TextRange expandRange(final TextRange range, final int shift, final int size) {
-    return new TextRange(Math.max(0, range.getStartOffset() - shift), Math.max(0, Math.min(size - 1, range.getEndOffset() + shift)));
-  }
-
-  private void setHighlighters(final Document oldDocument, final Document document,
-                               List<BeforeAfter<TextRange>> ranges, FragmentedContent fragmentedContent) {
-    EditorHighlighter highlighter = createHighlighter(fragmentedContent.getFileTypeBefore(),
-                                                      fragmentedContent.getFileBefore(),
-                                                      fragmentedContent.getFileAfter(), myProject).createHighlighter();
-    highlighter.setEditor(new LightHighlighterClient(oldDocument, myProject));
-    highlighter.setText(oldDocument.getText());
-    HighlighterIterator iterator = highlighter.createIterator(ranges.get(0).getBefore().getStartOffset());
-    FragmentedEditorHighlighter beforeHighlighter = new FragmentedEditorHighlighter(iterator, getBeforeFragments(), 1, true);
-    setBeforeHighlighter(beforeHighlighter);
-
-    EditorHighlighter highlighter1 = createHighlighter(fragmentedContent.getFileTypeAfter(),
-                                                       fragmentedContent.getFileAfter(),
-                                                       fragmentedContent.getFileBefore(), myProject).createHighlighter();
-    highlighter1.setEditor(new LightHighlighterClient(document, myProject));
-    highlighter1.setText(document.getText());
-    HighlighterIterator iterator1 = highlighter1.createIterator(ranges.get(0).getAfter().getStartOffset());
-    FragmentedEditorHighlighter afterHighlighter = new FragmentedEditorHighlighter(iterator1, getAfterFragments(), 1, true);
-    setAfterHighlighter(afterHighlighter);
-  }
-
-  private DiffHighlighterFactory createHighlighter(FileType contentType,
-                                                   VirtualFile file,
-                                                   VirtualFile otherFile,
-                                                   Project project) {
-    VirtualFile baseFile = file;
-    if (baseFile == null) baseFile = otherFile;
-    if (contentType == null) contentType = myFileType;
-
-    return new DiffHighlighterFactoryImpl(contentType, baseFile, project);
-  }
-
-  private void setTodoHighlighting(final Document oldDocument, final Document document) {
-    final ContentRevisionCache cache = ProjectLevelVcsManager.getInstance(myProject).getContentRevisionCache();
-    final List<Pair<TextRange,TextAttributes>> beforeTodoRanges = myBeforeNumber == null ? Collections.<Pair<TextRange,TextAttributes>>emptyList() :
-      new TodoForBaseRevision(myProject, getBeforeFragments(), 1, myFileName, oldDocument.getText(), true, myFileType, new Getter<Object>() {
-      @Override
-      public Object get() {
-        return cache.getCustom(myFilePath, myBeforeNumber);
-      }
-    }, new Consumer<Object>() {
-      @Override
-      public void consume(Object items) {
-        cache.putCustom(myFilePath, myBeforeNumber, items);
-      }
-    }).execute();
-
-    final List<Pair<TextRange, TextAttributes>> afterTodoRanges = new TodoForExistingFile(myProject, getAfterFragments(), 1,
-      myFileName, document.getText(), false, myFileType, myFile).execute();
-    setBeforeTodoRanges(beforeTodoRanges);
-    setAfterTodoRanges(afterTodoRanges);
-  }
-
-  public VirtualFile getFile() {
-    return myFile;
-  }
-
-  public FileType getFileType() {
-    return myFileType;
-  }
-}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ShortDiffDetails.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ShortDiffDetails.java
deleted file mode 100644 (file)
index f267e2a..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright 2000-2011 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.vcs.changes;
-
-import com.intellij.openapi.Disposable;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Disposer;
-import com.intellij.openapi.util.Getter;
-import com.intellij.openapi.vcs.Details;
-import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.GenericDetailsLoader;
-import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.util.Consumer;
-import com.intellij.util.PairConsumer;
-import com.intellij.util.containers.SLRUMap;
-import com.intellij.vcsUtil.UIVcsUtil;
-import com.intellij.vcsUtil.VcsUtil;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-
-/**
- * Created by IntelliJ IDEA.
- * User: Irina.Chernushina
- * Date: 8/17/11
- * Time: 7:08 PM
- */
-
-/**
- * @deprecated use {@link CacheChangeProcessor} instead
- */
-@Deprecated
-public class ShortDiffDetails implements RefreshablePanel<Change>, Disposable {
-  private final Project myProject;
-  private final VcsChangeDetailsManager myVcsChangeDetailsManager;
-  private final Getter<Change[]> myMaster;
-
-  private DetailsPanel myDetailsPanel;
-  private GenericDetailsLoader<Change, RefreshablePanel> myDetailsLoader;
-  private PairConsumer<Change,RefreshablePanel> myDetailsConsumer;
-  private final SLRUMap<FilePath,RefreshablePanel> myDetailsCache;
-  private FilePath myCurrentFilePath;
-  private JComponent myParent;
-  private RefreshablePanel myCurrentPanel;
-
-  public ShortDiffDetails(Project project, Getter<Change[]> master, final VcsChangeDetailsManager vcsChangeDetailsManager) {
-    myMaster = master;
-    myProject = project;
-    myVcsChangeDetailsManager = vcsChangeDetailsManager;
-
-    myDetailsCache = new SLRUMap<FilePath, RefreshablePanel>(10, 10) {
-      @Override
-      protected void onDropFromCache(FilePath key, RefreshablePanel value) {
-        if (value != null) {
-          Disposer.dispose(value);
-        }
-      }
-    };
-  }
-
-  @Override
-  public boolean isStillValid(Change change) {
-    return true;
-  }
-
-  @Override
-  public boolean refreshDataSynch() {
-    Change selected = myDetailsLoader.getCurrentlySelected();
-    if (selected == null) return false;
-    if (myCurrentPanel != null) {
-      return myCurrentPanel.refreshDataSynch();
-    }
-    return false;
-  }
-
-  public void setParent(JComponent parent) {
-    myParent = parent;
-  }
-
-  @Override
-  public void dataChanged() {
-  }
-
-  @Override
-  public void refresh() {
-    ensureDetailsCreated();
-    myCurrentFilePath = setDetails();
-    myDetailsPanel.layout();
-  }
-
-  public FilePath getCurrentFilePath() {
-    return myCurrentFilePath;
-  }
-
-  @Nullable
-  private FilePath setDetails() {
-    FilePath currentFilePath = null;
-    final Change[] selectedChanges = myMaster.get();
-    if (selectedChanges.length == 0) {
-      myDetailsPanel.nothingSelected();
-    } else {
-      final String freezed = ChangeListManager.getInstance(myProject).isFreezed();
-      if (freezed != null) {
-        myDetailsPanel.data(UIVcsUtil.errorPanel(freezed, false));
-        return currentFilePath;
-      }
-
-      myDetailsPanel.notAvailable();
-      for (Change change : selectedChanges) {
-        if (change.getBeforeRevision() instanceof FakeRevision || change.getAfterRevision() instanceof FakeRevision) {
-          myDetailsPanel.loadingInitial();
-          return currentFilePath;
-        }
-        if (myVcsChangeDetailsManager.canComment(change)) {
-          currentFilePath = ChangesUtil.getFilePath(change);
-          myDetailsLoader.updateSelection(change, true);
-          return currentFilePath;
-        }
-      }
-
-      myDetailsPanel.notAvailable();
-    }
-    return currentFilePath;
-  }
-
-  @Override
-  public JPanel getPanel() {
-    ensureDetailsCreated();
-    return myDetailsPanel.getPanel();
-  }
-
-  @Override
-  public void away() {
-    //
-  }
-
-  private void ensureDetailsCreated() {
-    if (myDetailsConsumer != null) return;
-
-    myDetailsPanel = new DetailsPanel();
-    final PairConsumer<Change, RefreshablePanel> cacheConsumer = new PairConsumer<Change, RefreshablePanel>() {
-      @Override
-      public void consume(Change change, RefreshablePanel pair) {
-        final FilePath filePath = ChangesUtil.getFilePath(change);
-        final RefreshablePanel old = myDetailsCache.get(filePath);
-        if (old == null) {
-          myDetailsCache.put(filePath, pair);
-        } else if (old != pair) {
-          if (pair != null) {
-            myDetailsCache.put(filePath, pair);
-            Disposer.dispose(old);
-          }
-        }
-      }
-    };
-    myDetailsConsumer = new PairConsumer<Change, RefreshablePanel>() {
-      @Override
-      public void consume(Change change, RefreshablePanel pair) {
-        cacheConsumer.consume(change, pair);
-        pair.refresh();
-        myCurrentPanel = pair;
-        myDetailsPanel.data(myCurrentPanel.getPanel());
-        myDetailsPanel.layout();
-      }
-    };
-    myDetailsLoader = new GenericDetailsLoader<Change, RefreshablePanel>(new Consumer<Change>() {
-      @Override
-      public void consume(Change change) {
-        if (myCurrentPanel != null) {
-          myCurrentPanel.away();
-        }
-
-        final FilePath filePath = ChangesUtil.getFilePath(change);
-        RefreshablePanel details = myDetailsCache.get(filePath);
-        if (details != null && ! details.isStillValid(change)) {
-          Disposer.dispose(details);
-          details = null;
-          myDetailsLoader.resetValueConsumer();
-        }
-        if (details != null) {
-          myDetailsConsumer.consume(change, details);
-        } else {
-          final RefreshablePanel detailsPanel = myVcsChangeDetailsManager.getPanel(change, myParent);
-          if (detailsPanel != null) {
-            try {
-              myDetailsLoader.take(change, detailsPanel);
-            }
-            catch (Details.AlreadyDisposedException e) {
-              Disposer.dispose(detailsPanel);
-            }
-//            myDetailsPanel.layout();
-          }
-        }
-      }
-    }, myDetailsConsumer);
-    myDetailsLoader.setCacheConsumer(cacheConsumer);
-  }
-
-  @Override
-  public void dispose() {
-    if (myDetailsLoader != null) {
-      Disposer.dispose(myDetailsLoader);
-    }
-    if (myDetailsPanel != null) {
-      myDetailsPanel.clear();
-    }
-    myDetailsCache.clear();
-  }
-
-  public boolean refreshData(VirtualFile vf) {
-    RefreshablePanel panel = myDetailsCache.get(VcsUtil.getFilePath(vf));
-    if (panel != null) {
-      panel.dataChanged();
-      return true;
-    }
-    return false;
-  }
-}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ValueWithVcsException.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ValueWithVcsException.java
deleted file mode 100644 (file)
index 247abfd..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2000-2011 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.vcs.changes;
-
-import com.intellij.openapi.vcs.VcsException;
-
-/**
-* Created by IntelliJ IDEA.
-* User: Irina.Chernushina
-* Date: 9/7/11
-* Time: 5:33 PM
-*/
-public abstract class ValueWithVcsException<T> extends TransparentlyFailedValue<T, VcsException> {
-  public ValueWithVcsException() {
-    try {
-      set(computeImpl());
-    }
-    catch (VcsException e) {
-      fail(e);
-    }
-  }
-
-  protected abstract T computeImpl() throws VcsException;
-}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsChangeDetailsManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsChangeDetailsManager.java
deleted file mode 100644 (file)
index b7481e9..0000000
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * Copyright 2000-2014 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.vcs.changes;
-
-import com.intellij.openapi.Disposable;
-import com.intellij.openapi.application.ApplicationManager;
-import com.intellij.openapi.components.ServiceManager;
-import com.intellij.openapi.diff.DiffBundle;
-import com.intellij.openapi.diff.DiffContent;
-import com.intellij.openapi.diff.DiffManager;
-import com.intellij.openapi.diff.DiffPanel;
-import com.intellij.openapi.diff.ex.DiffPanelEx;
-import com.intellij.openapi.diff.ex.DiffPanelOptions;
-import com.intellij.openapi.diff.impl.DiffPanelImpl;
-import com.intellij.openapi.diff.impl.DiffUtil;
-import com.intellij.openapi.diff.impl.external.BinaryDiffTool;
-import com.intellij.openapi.extensions.Extensions;
-import com.intellij.openapi.progress.BackgroundTaskQueue;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Computable;
-import com.intellij.openapi.util.Disposer;
-import com.intellij.openapi.util.Pair;
-import com.intellij.openapi.vcs.FilePath;
-import com.intellij.openapi.vcs.VcsException;
-import com.intellij.openapi.vcs.changes.actions.ShowDiffAction;
-import com.intellij.openapi.vcs.history.ShortVcsRevisionNumber;
-import com.intellij.openapi.vcs.history.VcsRevisionNumber;
-import com.intellij.util.BeforeAfter;
-import com.intellij.vcsUtil.UIVcsUtil;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import java.awt.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * todo extract interface and create stub for dummy project
- * @author irengrig
- *         Date: 6/15/11
- *         Time: 5:36 PM
- */
-@Deprecated
-public class VcsChangeDetailsManager {
-  private final List<VcsChangeDetailsProvider> myProviders = new ArrayList<VcsChangeDetailsProvider>();
-  private final List<VcsChangeDetailsProvider> myDedicatedList;
-  private final Project myProject;
-  private final BackgroundTaskQueue myQueue;
-
-  public VcsChangeDetailsManager(final Project project) {
-    myProject = project;
-    myQueue = new BackgroundTaskQueue(myProject, "Loading change details");
-    myDedicatedList = new ArrayList<VcsChangeDetailsProvider>();
-
-    myDedicatedList.add(new BinaryDetailsProviderNew(project));
-    myDedicatedList.add(new FragmentedDiffDetailsProvider(myProject));
-
-    VcsChangeDetailsProvider[] extensions = Extensions.getExtensions(VcsChangeDetailsProvider.EP_NAME, myProject);
-    myProviders.addAll(Arrays.asList(extensions));
-
-    Disposer.register(project, new Disposable() {
-      @Override
-      public void dispose() {
-        myQueue.clear();
-      }
-    });
-  }
-
-  public boolean canComment(final Change change) {
-    for (VcsChangeDetailsProvider provider : myDedicatedList) {
-      if (provider.canComment(change)) return true;
-    }
-    for (VcsChangeDetailsProvider provider : myProviders) {
-      if (provider.canComment(change)) return true;
-    }
-    return false;
-  }
-
-  @Nullable
-  public RefreshablePanel getPanel(final Change change, JComponent parent) {
-    final List<Pair<String, RefreshablePanel>> panels = new ArrayList<Pair<String, RefreshablePanel>>();
-    for (VcsChangeDetailsProvider convertor : myDedicatedList) {
-      if (! convertor.canComment(change)) continue;
-      RefreshablePanel panel = convertor.comment(change, parent, myQueue);
-      if (panel != null) {
-        panels.add(Pair.create("Diff", panel));
-        break;  // only one of dedicated for now
-      }
-    }
-    for (VcsChangeDetailsProvider provider : myProviders) {
-      if (provider.canComment(change)) {
-        RefreshablePanel panel = provider.comment(change, parent, myQueue);
-        if (panel != null) {
-          panels.add(Pair.create(provider.getName(), panel));
-        }
-      }
-    }
-    if (! panels.isEmpty()) {
-      if (panels.size() == 1) {
-        return panels.get(0).getSecond();
-      } else {
-        TabbedRefreshablePanel tabbedRefreshablePanel = new TabbedRefreshablePanel();
-        for (Pair<String, RefreshablePanel> panel : panels) {
-          tabbedRefreshablePanel.addTab(panel.getFirst(), panel.getSecond());
-        }
-        return tabbedRefreshablePanel;
-      }
-    }
-    return null;
-  }
-
-  public static VcsChangeDetailsManager getInstance(Project project) {
-    return ServiceManager.getService(project, VcsChangeDetailsManager.class);
-  }
-
-  private static class BinaryDetailsProviderNew implements VcsChangeDetailsProvider {
-    private final Project myProject;
-
-    private BinaryDetailsProviderNew(Project project) {
-      myProject = project;
-    }
-
-    @Override
-    public String getName() {
-      return "Contents Diff";
-    }
-
-    @Override
-    public boolean canComment(Change change) {
-      return canBeShownInBinaryDiff(change, myProject);
-    }
-
-    @Override
-    public RefreshablePanel comment(Change change, JComponent parent, BackgroundTaskQueue queue) {
-      return new BinaryDiffDetailsPanel(myProject, queue, change);
-    }
-  }
-
-  private static boolean canBeShownInBinaryDiff(Change change, final Project project) {
-    FilePath path = ChangesUtil.getFilePath(change);
-    if (path != null && path.isDirectory()) return false;
-    if (change.isTreeConflict() || change.isPhantom()) return false;
-    return ShowDiffAction.isBinaryChangeAndCanShow(project, change);
-  }
-
-  private static class BinaryDiffDetailsPanel extends AbstractRefreshablePanel<ValueWithVcsException<List<BeforeAfter<DiffContent>>>> {
-    private final BinaryDiffRequestFromChange myRequestFromChange;
-    private final Project myProject;
-    private final ChangeListManager myChangeListManager;
-    private final FilePath myFilePath;
-    private Change myChange;
-    private final DiffPanel myPanel;
-
-    private BinaryDiffDetailsPanel(Project project, BackgroundTaskQueue queue, final Change change) {
-      super(project, "Loading change content", queue);
-      myProject = project;
-      myFilePath = ChangesUtil.getFilePath(change);
-      myRequestFromChange = new BinaryDiffRequestFromChange(myProject);
-      myChangeListManager = ChangeListManager.getInstance(myProject);
-
-      myPanel = DiffManager.getInstance().createDiffPanel(null, myProject, this, BinaryDiffTool.INSTANCE);
-      myPanel.enableToolbar(false);
-      myPanel.removeStatusBar();
-      DiffPanelOptions o = ((DiffPanelEx)myPanel).getOptions();
-      o.setRequestFocusOnNewContent(false);
-    }
-
-    @Override
-    public boolean isStillValid(Change data) {
-      return canBeShownInBinaryDiff(data, myProject);
-    }
-
-    @Override
-    protected void refreshPresentation() {
-    }
-
-    @Override
-    protected ValueWithVcsException<List<BeforeAfter<DiffContent>>> loadImpl() throws VcsException {
-      myChange = myChangeListManager.getChange(myFilePath);
-      if (myChange == null) {
-        return null;
-      }
-      return new ValueWithVcsException<List<BeforeAfter<DiffContent>>>() {
-        @Override
-        protected List<BeforeAfter<DiffContent>> computeImpl() throws VcsException {
-          return myRequestFromChange.createRequestForChange(myChange, 0);
-        }
-      };
-    }
-
-    @Override
-    protected JPanel dataToPresentation(ValueWithVcsException<List<BeforeAfter<DiffContent>>> value) {
-      if (value == null) return noDifferences();
-      final List<BeforeAfter<DiffContent>> contents;
-      try {
-        contents = value.get();
-        if (contents == null) throw new VcsException("Can not load content");
-        if (isUnknownType(contents)) {
-          return UIVcsUtil.errorPanel(DiffBundle.message("diff.can.not.show.unknown"), false);
-        }
-        if (isEmpty(contents)) throw new VcsException("Can not load content");
-      }
-      catch (VcsException e) {
-        return UIVcsUtil.errorPanel(e.getMessage(), true);
-      }
-      if (contents.isEmpty()) return noDifferences();
-      assert contents.size() == 1;
-
-      myPanel.setContents(contents.get(0).getBefore(), contents.get(0).getAfter());
-      ((DiffPanelImpl)myPanel).getOptions().setRequestFocusOnNewContent(false);
-
-      final JPanel wholeWrapper = new JPanel(new BorderLayout());
-      final JPanel topPanel = new JPanel(new BorderLayout());
-      final JPanel wrapper = new JPanel();
-      final BoxLayout boxLayout = new BoxLayout(wrapper, BoxLayout.X_AXIS);
-      wrapper.setLayout(boxLayout);
-      final JLabel label = new JLabel(changeDescription(myChange));
-      label.setBorder(BorderFactory.createEmptyBorder(1,2,0,0));
-      wrapper.add(label);
-      topPanel.add(wrapper, BorderLayout.CENTER);
-
-      wholeWrapper.add(topPanel, BorderLayout.NORTH);
-      //wholeWrapper.add(new JBScrollPane(panel.getComponent()), BorderLayout.CENTER);
-      wholeWrapper.add(myPanel.getComponent(), BorderLayout.CENTER);
-      return wholeWrapper;
-    }
-
-    private static boolean isUnknownType(List<BeforeAfter<DiffContent>> contents) {
-      for (BeforeAfter<DiffContent> content : contents) {
-        if (DiffUtil.oneIsUnknown(content.getBefore(), content.getAfter())) {
-          return true;
-        }
-      }
-      return false;
-    }
-
-    private boolean isEmpty(List<BeforeAfter<DiffContent>> contents) {
-      for (BeforeAfter<DiffContent> content : contents) {
-        if (! contentIsEmpty(content.getAfter()) || ! contentIsEmpty(content.getBefore())) return false;
-      }
-      return true;
-    }
-
-    private boolean contentIsEmpty(final DiffContent content) {
-      return content != null && content.isEmpty();
-    }
-
-    @Override
-    protected void disposeImpl() {
-    }
-
-    @Override
-    public void away() {
-      //
-    }
-  }
-
-  private static JPanel noDifferences() {
-    return UIVcsUtil.errorPanel(DiffBundle.message("diff.contents.have.differences.only.in.line.separators.or.whitespaces"), false);
-  }
-
-  private static class FragmentedDiffDetailsProvider implements VcsChangeDetailsProvider {
-    private final Project myProject;
-
-    private FragmentedDiffDetailsProvider(Project project) {
-      myProject = project;
-    }
-
-    @Override
-    public String getName() {
-      return "Contents Diff";
-    }
-
-    @Override
-    public boolean canComment(Change change) {
-      return FragmentedDiffRequestFromChange.canCreateRequest(change);
-    }
-
-    @Override
-    public RefreshablePanel comment(Change change, JComponent parent, BackgroundTaskQueue queue) {
-      return new FragmentedDiffDetailsPanel(myProject, queue, change, parent);
-    }
-  }
-
-  private static class FragmentedDiffDetailsPanel extends AbstractRefreshablePanel<ValueWithVcsException<PreparedFragmentedContent>> {
-    private final FragmentedDiffRequestFromChange myRequestFromChange;
-    private final FilePath myFilePath;
-    private final ChangeListManager myChangeListManager;
-    private final ChangesFragmentedDiffPanel myDiffPanel;
-    private final Project myProject;
-
-    private FragmentedDiffDetailsPanel(Project project, BackgroundTaskQueue queue, final Change change, JComponent parent) {
-      super(project, "Loading change content", queue);
-      myProject = project;
-      myFilePath = ChangesUtil.getFilePath(change);
-      myRequestFromChange = new FragmentedDiffRequestFromChange(project);
-      myChangeListManager = ChangeListManager.getInstance(project);
-      myDiffPanel = new ChangesFragmentedDiffPanel(project, changeDescription(change), parent);
-      myDiffPanel.buildUi();
-    }
-
-    @Override
-    protected void refreshPresentation() {
-      myDiffPanel.refreshPresentation();
-    }
-
-    @Override
-    public boolean isStillValid(Change data) {
-      return FragmentedDiffRequestFromChange.canCreateRequest(data);
-    }
-
-    @Override
-    protected ValueWithVcsException<PreparedFragmentedContent> loadImpl() throws VcsException {
-      return ApplicationManager.getApplication().runReadAction(new Computable<ValueWithVcsException<PreparedFragmentedContent>>() {
-        @Override
-        public ValueWithVcsException<PreparedFragmentedContent> compute() {
-          return new ValueWithVcsException<PreparedFragmentedContent>() {
-            @Override
-            protected PreparedFragmentedContent computeImpl() throws VcsException {
-              final Change change = myChangeListManager.getChange(myFilePath);
-              if (change == null) {
-                return null;
-              }
-              myDiffPanel.setTitle(changeDescription(change));
-              return myRequestFromChange.getRanges(change);
-            }
-          };
-        }
-      });
-    }
-
-    @Override
-    protected JPanel dataToPresentation(ValueWithVcsException<PreparedFragmentedContent> value) {
-      final PreparedFragmentedContent requestForChange;
-      try {
-        if (value == null) return noDifferences();
-        requestForChange = value.get();
-        if (requestForChange == null) return noDifferences();
-        if (requestForChange.isEmpty()) {
-          return noDifferences();
-        }
-      }
-      catch (VcsException e) {
-        return UIVcsUtil.errorPanel(e.getMessage(), true);
-      }
-      myDiffPanel.refreshData(requestForChange);
-      return myDiffPanel.getPanel();
-    }
-
-    @Override
-    protected void disposeImpl() {
-      Disposer.dispose(myDiffPanel);
-    }
-
-    @Override
-    public boolean refreshDataSynch() {
-      try {
-        myTicket.increment();
-        ValueWithVcsException<PreparedFragmentedContent> exception = loadImpl();
-        dataToPresentation(exception);
-      }
-      catch (VcsException e) {
-        return false;
-      }
-      return true;
-    }
-
-    @Override
-    public void away() {
-      myDiffPanel.away();
-    }
-  }
-
-  private static String changeDescription(Change o) {
-    return ChangesUtil.getFilePath(o).getName() + " (" + (o.getBeforeRevision() == null ? "New" : beforeRevisionText(o)) + ")";
-  }
-
-  private static String beforeRevisionText(Change o) {
-    VcsRevisionNumber revisionNumber = o.getBeforeRevision().getRevisionNumber();
-    return revisionNumber instanceof ShortVcsRevisionNumber ? ((ShortVcsRevisionNumber) revisionNumber).toShortString() :
-           revisionNumber.asString();
-  }
-}