mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
vcs: remove wrongful generics
We can't give any warranties on actual type of ChangesBrowserNode, because we do not control actual tree building from List<T>. Root node and "collapsed" FilePath nodes might violate this assumption even in the simplest cases.
This commit is contained in:
+2
-2
@@ -135,11 +135,11 @@ public class DirectoryHistoryDialog extends HistoryDialog<DirectoryHistoryDialog
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Change> getSelectedObjects(ChangesBrowserNode node) {
|
||||
protected List<Change> getSelectedObjects(ChangesBrowserNode<?> node) {
|
||||
return node.getAllChangesUnder();
|
||||
}
|
||||
|
||||
protected Change getLeadSelectedObject(final ChangesBrowserNode node) {
|
||||
protected Change getLeadSelectedObject(final ChangesBrowserNode<?> node) {
|
||||
final Object o = node.getUserObject();
|
||||
if (o instanceof Change) {
|
||||
return (Change)o;
|
||||
|
||||
+2
-3
@@ -18,7 +18,6 @@ package com.intellij.openapi.vcs.changes.conflicts;
|
||||
|
||||
import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
@@ -63,12 +62,12 @@ public class MoveChangesDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Change> getSelectedObjects(ChangesBrowserNode<Change> node) {
|
||||
protected List<Change> getSelectedObjects(ChangesBrowserNode<?> node) {
|
||||
return node.getAllChangesUnder();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Change getLeadSelectedObject(ChangesBrowserNode node) {
|
||||
protected Change getLeadSelectedObject(ChangesBrowserNode<?> node) {
|
||||
final Object o = node.getUserObject();
|
||||
if (o instanceof Change) {
|
||||
return (Change) o;
|
||||
|
||||
+3
-3
@@ -585,13 +585,13 @@ public class ApplyPatchDifferentiatedDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<AbstractFilePatchInProgress.PatchChange> getSelectedObjects(ChangesBrowserNode<AbstractFilePatchInProgress.PatchChange> node) {
|
||||
protected List<AbstractFilePatchInProgress.PatchChange> getSelectedObjects(ChangesBrowserNode<?> node) {
|
||||
final List<Change> under = node.getAllChangesUnder();
|
||||
return map(under, AbstractFilePatchInProgress.PatchChange.class::cast);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractFilePatchInProgress.PatchChange getLeadSelectedObject(ChangesBrowserNode node) {
|
||||
protected AbstractFilePatchInProgress.PatchChange getLeadSelectedObject(ChangesBrowserNode<?> node) {
|
||||
final Object o = node.getUserObject();
|
||||
if (o instanceof AbstractFilePatchInProgress.PatchChange) {
|
||||
return (AbstractFilePatchInProgress.PatchChange)o;
|
||||
@@ -600,7 +600,7 @@ public class ApplyPatchDifferentiatedDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isNodeEnabled(ChangesBrowserNode node) {
|
||||
protected boolean isNodeEnabled(ChangesBrowserNode<?> node) {
|
||||
boolean enabled = super.isNodeEnabled(node);
|
||||
Object value = node.getUserObject();
|
||||
if (value instanceof AbstractFilePatchInProgress.PatchChange) {
|
||||
|
||||
@@ -50,12 +50,12 @@ public class ChangesBrowser extends ChangesBrowserBase<Change> {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected List<Change> getSelectedObjects(@NotNull final ChangesBrowserNode<Change> node) {
|
||||
protected List<Change> getSelectedObjects(@NotNull final ChangesBrowserNode<?> node) {
|
||||
return node.getAllChangesUnder();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected Change getLeadSelectedObject(@NotNull final ChangesBrowserNode node) {
|
||||
protected Change getLeadSelectedObject(@NotNull final ChangesBrowserNode<?> node) {
|
||||
final Object o = node.getUserObject();
|
||||
if (o instanceof Change) {
|
||||
return (Change)o;
|
||||
|
||||
@@ -116,12 +116,12 @@ public abstract class ChangesBrowserBase<T> extends JPanel implements TypeSafeDa
|
||||
return ChangesBrowserBase.this.buildTreeModel(changes, changeNodeDecorator, isShowFlatten());
|
||||
}
|
||||
|
||||
protected List<T> getSelectedObjects(final ChangesBrowserNode<T> node) {
|
||||
protected List<T> getSelectedObjects(final ChangesBrowserNode<?> node) {
|
||||
return ChangesBrowserBase.this.getSelectedObjects(node);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected T getLeadSelectedObject(final ChangesBrowserNode node) {
|
||||
protected T getLeadSelectedObject(final ChangesBrowserNode<?> node) {
|
||||
return ChangesBrowserBase.this.getLeadSelectedObject(node);
|
||||
}
|
||||
|
||||
@@ -151,10 +151,10 @@ public abstract class ChangesBrowserBase<T> extends JPanel implements TypeSafeDa
|
||||
protected abstract DefaultTreeModel buildTreeModel(final List<T> changes, ChangeNodeDecorator changeNodeDecorator, boolean showFlatten);
|
||||
|
||||
@NotNull
|
||||
protected abstract List<T> getSelectedObjects(@NotNull ChangesBrowserNode<T> node);
|
||||
protected abstract List<T> getSelectedObjects(@NotNull ChangesBrowserNode<?> node);
|
||||
|
||||
@Nullable
|
||||
protected abstract T getLeadSelectedObject(@NotNull ChangesBrowserNode node);
|
||||
protected abstract T getLeadSelectedObject(@NotNull ChangesBrowserNode<?> node);
|
||||
|
||||
@NotNull
|
||||
protected Runnable getDoubleClickHandler() {
|
||||
|
||||
@@ -292,7 +292,7 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
return;
|
||||
}
|
||||
|
||||
TreeUtil.expandAll(ChangesTreeList.this);
|
||||
TreeUtil.expandAll(this);
|
||||
|
||||
int selectedTreeRow = -1;
|
||||
|
||||
@@ -332,7 +332,7 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
if (selectedTreeRow >= 0) {
|
||||
setSelectionRow(selectedTreeRow);
|
||||
}
|
||||
TreeUtil.showRowCentered(ChangesTreeList.this, selectedTreeRow, false);
|
||||
TreeUtil.showRowCentered(this, selectedTreeRow, false);
|
||||
}
|
||||
|
||||
private int findRowContainingFile(@NotNull TreeNode root, @NotNull final VirtualFile toSelect) {
|
||||
@@ -390,7 +390,6 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
else {
|
||||
LinkedHashSet<T> changes = ContainerUtil.newLinkedHashSet();
|
||||
for (TreePath path : paths) {
|
||||
//noinspection unchecked
|
||||
changes.addAll(getSelectedObjects((ChangesBrowserNode)path.getLastPathComponent()));
|
||||
}
|
||||
return ContainerUtil.newArrayList(changes);
|
||||
@@ -404,10 +403,10 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
return getChanges();
|
||||
}
|
||||
|
||||
protected abstract List<T> getSelectedObjects(final ChangesBrowserNode<T> node);
|
||||
protected abstract List<T> getSelectedObjects(final ChangesBrowserNode<?> node);
|
||||
|
||||
@Nullable
|
||||
protected abstract T getLeadSelectedObject(final ChangesBrowserNode node);
|
||||
protected abstract T getLeadSelectedObject(final ChangesBrowserNode<?> node);
|
||||
|
||||
@Nullable
|
||||
public T getHighestLeadSelection() {
|
||||
@@ -415,15 +414,15 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
if (path == null) {
|
||||
return null;
|
||||
}
|
||||
//noinspection unchecked
|
||||
return getLeadSelectedObject((ChangesBrowserNode<T>)path.getLastPathComponent());
|
||||
|
||||
return getLeadSelectedObject((ChangesBrowserNode)path.getLastPathComponent());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public T getLeadSelection() {
|
||||
final TreePath path = getSelectionPath();
|
||||
//noinspection unchecked
|
||||
return path == null ? null : ContainerUtil.getFirstItem(getSelectedObjects(((ChangesBrowserNode<T>)path.getLastPathComponent())));
|
||||
|
||||
return path == null ? null : ContainerUtil.getFirstItem(getSelectedObjects(((ChangesBrowserNode)path.getLastPathComponent())));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -565,7 +564,7 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
@SuppressWarnings("unchecked")
|
||||
CheckboxTree.NodeState state = getNodeStatus((ChangesBrowserNode)value);
|
||||
myCheckBox.setSelected(state != CheckboxTree.NodeState.CLEAR);
|
||||
//noinspection unchecked
|
||||
|
||||
myCheckBox.setEnabled(tree.isEnabled() && isNodeEnabled((ChangesBrowserNode)value));
|
||||
revalidate();
|
||||
|
||||
@@ -583,7 +582,7 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
}
|
||||
|
||||
|
||||
private CheckboxTree.NodeState getNodeStatus(ChangesBrowserNode<T> node) {
|
||||
private CheckboxTree.NodeState getNodeStatus(ChangesBrowserNode<?> node) {
|
||||
boolean hasIncluded = false;
|
||||
boolean hasExcluded = false;
|
||||
|
||||
@@ -601,7 +600,7 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
return CheckboxTree.NodeState.CLEAR;
|
||||
}
|
||||
|
||||
protected boolean isNodeEnabled(ChangesBrowserNode<T> node) {
|
||||
protected boolean isNodeEnabled(ChangesBrowserNode<?> node) {
|
||||
return getNodeStatus(node) != CheckboxTree.NodeState.PARTIAL;
|
||||
}
|
||||
|
||||
@@ -635,10 +634,10 @@ public abstract class ChangesTreeList<T> extends Tree implements TypeSafeDataPro
|
||||
HashSet<T> changesSet = new HashSet<>(changes);
|
||||
final List<TreePath> treeSelection = new ArrayList<>(changes.size());
|
||||
TreeUtil.traverse(getRoot(), node -> {
|
||||
@SuppressWarnings("unchecked")
|
||||
final T change = (T) ((DefaultMutableTreeNode) node).getUserObject();
|
||||
if (changesSet.contains(change)) {
|
||||
treeSelection.add(new TreePath(((DefaultMutableTreeNode) node).getPath()));
|
||||
DefaultMutableTreeNode mutableNode = (DefaultMutableTreeNode)node;
|
||||
//noinspection SuspiciousMethodCalls
|
||||
if (changesSet.contains(mutableNode.getUserObject())) {
|
||||
treeSelection.add(new TreePath(mutableNode.getPath()));
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
+2
-2
@@ -35,12 +35,12 @@ public class FilePathChangesTreeList extends ChangesTreeList<FilePath> {
|
||||
return TreeModelBuilder.buildFromFilePaths(myProject, isShowFlatten(), changes);
|
||||
}
|
||||
|
||||
protected List<FilePath> getSelectedObjects(final ChangesBrowserNode<FilePath> node) {
|
||||
protected List<FilePath> getSelectedObjects(final ChangesBrowserNode<?> node) {
|
||||
return node.getAllFilePathsUnder();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected FilePath getLeadSelectedObject(final ChangesBrowserNode node) {
|
||||
protected FilePath getLeadSelectedObject(final ChangesBrowserNode<?> node) {
|
||||
Object userObject = node.getUserObject();
|
||||
return userObject instanceof FilePath ? (FilePath)userObject : null;
|
||||
}
|
||||
|
||||
+2
-2
@@ -204,7 +204,7 @@ public class MultipleChangeListBrowser extends ChangesBrowserBase<Object> {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected List<Object> getSelectedObjects(@NotNull ChangesBrowserNode<Object> node) {
|
||||
protected List<Object> getSelectedObjects(@NotNull ChangesBrowserNode<?> node) {
|
||||
List<Object> result = ContainerUtil.newArrayList();
|
||||
|
||||
result.addAll(node.getAllChangesUnder());
|
||||
@@ -217,7 +217,7 @@ public class MultipleChangeListBrowser extends ChangesBrowserBase<Object> {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected Object getLeadSelectedObject(@NotNull ChangesBrowserNode node) {
|
||||
protected Object getLeadSelectedObject(@NotNull ChangesBrowserNode<?> node) {
|
||||
Object result = null;
|
||||
Object userObject = node.getUserObject();
|
||||
|
||||
|
||||
@@ -105,11 +105,11 @@ public class SelectFilesDialog extends AbstractSelectFilesDialog<VirtualFile> {
|
||||
return TreeModelBuilder.buildFromVirtualFiles(myProject, isShowFlatten(), changes);
|
||||
}
|
||||
|
||||
protected List<VirtualFile> getSelectedObjects(final ChangesBrowserNode node) {
|
||||
protected List<VirtualFile> getSelectedObjects(final ChangesBrowserNode<?> node) {
|
||||
return node.getAllFilesUnder();
|
||||
}
|
||||
|
||||
protected VirtualFile getLeadSelectedObject(final ChangesBrowserNode node) {
|
||||
protected VirtualFile getLeadSelectedObject(final ChangesBrowserNode<?> node) {
|
||||
final Object o = node.getUserObject();
|
||||
if (o instanceof VirtualFile) {
|
||||
return (VirtualFile) o;
|
||||
|
||||
Reference in New Issue
Block a user