use of com.intellij.uiDesigner.SelectionState in project intellij-community by JetBrains.
the class ExpandSelectionAction method update.
public void update(final AnActionEvent e) {
final Presentation presentation = e.getPresentation();
final GuiEditor editor = FormEditingUtil.getEditorFromContext(e.getDataContext());
if (editor == null) {
presentation.setEnabled(false);
return;
}
final SelectionState selectionState = editor.getSelectionState();
selectionState.setInsideChange(true);
final Stack<ComponentPtr[]> history = selectionState.getSelectionHistory();
presentation.setEnabled(!history.isEmpty());
}
use of com.intellij.uiDesigner.SelectionState in project intellij-community by JetBrains.
the class ShrinkSelectionAction method actionPerformed.
public void actionPerformed(final AnActionEvent e) {
final GuiEditor editor = FormEditingUtil.getEditorFromContext(e.getDataContext());
assert editor != null;
final SelectionState selectionState = editor.getSelectionState();
selectionState.setInsideChange(true);
ComponentTreeBuilder builder = DesignerToolWindowManager.getInstance(editor).getComponentTreeBuilder();
builder.beginUpdateSelection();
try {
final Stack<ComponentPtr[]> history = selectionState.getSelectionHistory();
history.pop();
SelectionState.restoreSelection(editor, history.peek());
} finally {
builder.endUpdateSelection();
selectionState.setInsideChange(false);
}
}
use of com.intellij.uiDesigner.SelectionState in project intellij-community by JetBrains.
the class ExpandSelectionAction method actionPerformed.
public void actionPerformed(final AnActionEvent e) {
final GuiEditor editor = FormEditingUtil.getEditorFromContext(e.getDataContext());
assert editor != null;
final SelectionState selectionState = editor.getSelectionState();
selectionState.setInsideChange(true);
ComponentTreeBuilder builder = DesignerToolWindowManager.getInstance(editor).getComponentTreeBuilder();
if (builder != null) {
builder.beginUpdateSelection();
}
final Stack<ComponentPtr[]> history = selectionState.getSelectionHistory();
try {
final ComponentPtr[] ptrs = history.peek();
for (int i = ptrs.length - 1; i >= 0; i--) {
// Skip invalid components
final ComponentPtr ptr = ptrs[i];
ptr.validate();
if (!ptr.isValid()) {
continue;
}
// Extend selection
final RadComponent component = ptr.getComponent();
final RadContainer parent = component.getParent();
if (parent == null) {
// skip components without parents
continue;
}
boolean shouldSelectParent = true;
for (int j = parent.getComponentCount() - 1; j >= 0; j--) {
final RadComponent sibling = parent.getComponent(j);
if (!sibling.isSelected()) {
shouldSelectParent = false;
sibling.setSelected(true);
}
}
if (shouldSelectParent) {
parent.setSelected(true);
}
}
// Store new selection
history.push(SelectionState.getSelection(editor));
} finally {
if (builder != null) {
builder.endUpdateSelection();
}
selectionState.setInsideChange(false);
}
}
Aggregations