mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-19061 Integrate the Rearranger-plugin into core-IDEA
Implementing 'remove last row condition'
This commit is contained in:
+39
-1
@@ -116,6 +116,44 @@ public class ArrangementRuleEditingModelImplTest extends AbstractArrangementRule
|
||||
|
||||
@Test
|
||||
public void removeLastRowCondition() {
|
||||
// TODO den implement
|
||||
configure(and(atom(FIELD), atom(PUBLIC)));
|
||||
ArrangementRuleEditingModel model = myRowMappings.get(2);
|
||||
assertNotNull(model);
|
||||
assertEquals(1, myRowMappings.size());
|
||||
|
||||
model.removeAndCondition(atom(PUBLIC));
|
||||
|
||||
assertEquals(1, myRowMappings.size());
|
||||
assertSame(model, myRowMappings.get(1));
|
||||
assertEquals(atom(FIELD), model.getSettingsNode());
|
||||
|
||||
DefaultMutableTreeNode fieldNode = (DefaultMutableTreeNode)myRoot.getFirstChild();
|
||||
assertNotNull(fieldNode);
|
||||
assertEquals(atom(FIELD), fieldNode.getUserObject());
|
||||
|
||||
assertEquals(0, fieldNode.getChildCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void removeLastRowConditionFromMultiChildrenParent() {
|
||||
// TODO den uncomment
|
||||
//configure(and(atom(FIELD), atom(PUBLIC)));
|
||||
//configure(and(atom(FIELD), atom(STATIC)));
|
||||
//
|
||||
//ArrangementRuleEditingModel modelToChange = myRowMappings.get(2);
|
||||
//assertNotNull(modelToChange);
|
||||
//
|
||||
//ArrangementRuleEditingModel siblingModel = myRowMappings.get(3);
|
||||
//assertNotNull(siblingModel);
|
||||
//assertEquals(2, myRowMappings.size());
|
||||
//
|
||||
//modelToChange.removeAndCondition(atom(PUBLIC));
|
||||
//
|
||||
//assertEquals(2, myRowMappings.size());
|
||||
//assertSame(modelToChange, myRowMappings.get(1));
|
||||
//assertEquals(atom(FIELD), modelToChange.getSettingsNode());
|
||||
//
|
||||
//assertSame(siblingModel, myRowMappings.get(3));
|
||||
//assertEquals(and(atom(FIELD), atom(STATIC)), siblingModel);
|
||||
}
|
||||
}
|
||||
|
||||
+28
-4
@@ -110,13 +110,12 @@ public class ArrangementRuleEditingModelImpl implements ArrangementRuleEditingMo
|
||||
HierarchicalArrangementSettingsNode grouped = myGrouper.group(newNode);
|
||||
int newDepth = ArrangementConfigUtil.getDepth(grouped);
|
||||
int oldDepth = ArrangementConfigUtil.distance(myTopMost, myBottomMost);
|
||||
mySettingsNode = newNode;
|
||||
if (newDepth == oldDepth) {
|
||||
mySettingsNode = newNode;
|
||||
myBottomMost.setUserObject(ArrangementConfigUtil.getLast(grouped).getCurrent());
|
||||
return;
|
||||
}
|
||||
|
||||
mySettingsNode = newNode;
|
||||
DefaultMutableTreeNode parent = (DefaultMutableTreeNode)myTopMost.getParent();
|
||||
parent.remove(myTopMost);
|
||||
Pair<DefaultMutableTreeNode,Integer> pair = ArrangementConfigUtil.map(parent, grouped);
|
||||
@@ -157,16 +156,36 @@ public class ArrangementRuleEditingModelImpl implements ArrangementRuleEditingMo
|
||||
newNode = composite.getOperands().iterator().next();
|
||||
}
|
||||
|
||||
mySettingsNode = newNode;
|
||||
|
||||
HierarchicalArrangementSettingsNode grouped = myGrouper.group(newNode);
|
||||
int newDepth = ArrangementConfigUtil.getDepth(grouped);
|
||||
int oldDepth = ArrangementConfigUtil.distance(myTopMost, myBottomMost);
|
||||
if (oldDepth == newDepth) {
|
||||
mySettingsNode = newNode;
|
||||
myBottomMost.setUserObject(ArrangementConfigUtil.getLast(grouped).getCurrent());
|
||||
return;
|
||||
}
|
||||
|
||||
DefaultMutableTreeNode parent = (DefaultMutableTreeNode)myTopMost.getParent();
|
||||
parent.remove(myTopMost);
|
||||
Pair<DefaultMutableTreeNode,Integer> pair = ArrangementConfigUtil.map(parent, grouped);
|
||||
myTopMost = (DefaultMutableTreeNode)ArrangementConfigUtil.getLastBefore(pair.first, parent);
|
||||
myBottomMost = pair.first;
|
||||
|
||||
// TODO den implement
|
||||
int[] rows = myRowMappings.keys();
|
||||
Arrays.sort(rows);
|
||||
int depthShift = oldDepth - newDepth;
|
||||
for (int row : rows) {
|
||||
if (row >= myRow) {
|
||||
myRowMappings.put(row - depthShift, myRowMappings.get(row));
|
||||
myRowMappings.remove(row);
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
myRow -= depthShift;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -180,6 +199,11 @@ public class ArrangementRuleEditingModelImpl implements ArrangementRuleEditingMo
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "model for " + mySettingsNode;
|
||||
}
|
||||
|
||||
private static class MyConditionsBuilder implements ArrangementSettingsNodeVisitor {
|
||||
|
||||
@NotNull Set<Object> conditions;
|
||||
|
||||
Reference in New Issue
Block a user