use of com.intellij.uiDesigner.palette.Palette in project intellij-community by JetBrains.
the class SurroundAction method actionPerformed.
public void actionPerformed(final GuiEditor editor, final List<RadComponent> selection, final AnActionEvent e) {
// the action is also reused as quickfix for NoScrollPaneInspection, so this code should be kept here
FormEditingUtil.remapToActionTargets(selection);
if (!editor.ensureEditable()) {
return;
}
final RadContainer selectionParent = FormEditingUtil.getSelectionParent(selection);
assert selectionParent != null;
final Palette palette = Palette.getInstance(editor.getProject());
final ComponentItem cItem = palette.getItem(myComponentClass);
assert cItem != null : myComponentClass;
CommandProcessor.getInstance().executeCommand(editor.getProject(), () -> {
RadContainer newContainer = (RadContainer) InsertComponentProcessor.createInsertedComponent(editor, cItem);
if (newContainer == null) {
return;
}
if (cItem == palette.getPanelItem()) {
if (selectionParent.getLayoutManager().isGrid()) {
try {
newContainer.setLayoutManager(LayoutManagerRegistry.createLayoutManager(selectionParent.getLayoutManager().getName()));
} catch (Exception e1) {
LOG.error(e1);
return;
}
} else {
newContainer.setLayoutManager(LayoutManagerRegistry.createDefaultGridLayoutManager(editor.getProject()));
}
}
Rectangle rc = new Rectangle(0, 0, 1, 1);
int minIndex = Integer.MAX_VALUE;
if (selectionParent.getLayoutManager().isGrid()) {
rc = FormEditingUtil.getSelectionBounds(selection);
} else if (selectionParent.getLayoutManager().isIndexed()) {
for (RadComponent c : selection) {
minIndex = Math.min(minIndex, selectionParent.indexOfComponent(c));
}
}
for (RadComponent c : selection) {
selectionParent.removeComponent(c);
}
if (selectionParent.getLayoutManager().isGrid()) {
final GridConstraints newConstraints = newContainer.getConstraints();
newConstraints.setRow(rc.y);
newConstraints.setColumn(rc.x);
newConstraints.setRowSpan(rc.height);
newConstraints.setColSpan(rc.width);
} else if (selectionParent.getLayout() instanceof XYLayoutManager && selection.size() == 1) {
newContainer.setBounds(selection.get(0).getBounds());
}
if (selection.size() == 1) {
newContainer.setCustomLayoutConstraints(selection.get(0).getCustomLayoutConstraints());
}
if (minIndex != Integer.MAX_VALUE) {
selectionParent.addComponent(newContainer, minIndex);
} else {
selectionParent.addComponent(newContainer);
}
if (newContainer instanceof RadTabbedPane) {
// the first tab is created by RadTabbedPane itself
assert newContainer.getComponentCount() == 1;
newContainer = (RadContainer) newContainer.getComponent(0);
} else if (newContainer instanceof RadSplitPane) {
if (selection.size() > 2) {
RadContainer panel = InsertComponentProcessor.createPanelComponent(editor);
panel.setCustomLayoutConstraints(LwSplitPane.POSITION_LEFT);
newContainer.addComponent(panel);
newContainer = panel;
} else {
if (selection.size() > 0) {
selection.get(0).setCustomLayoutConstraints(LwSplitPane.POSITION_LEFT);
}
if (selection.size() > 1) {
selection.get(1).setCustomLayoutConstraints(LwSplitPane.POSITION_RIGHT);
}
}
}
// otherwise, copy column properties and row/col spans
if (newContainer.getComponentClass().equals(JPanel.class) && selection.size() > 1) {
if (selectionParent.getLayoutManager().isGrid()) {
newContainer.getGridLayoutManager().copyGridSection(selectionParent, newContainer, rc);
} else {
// TODO[yole]: correctly handle surround from indexed
newContainer.setLayout(new GridLayoutManager(rc.height, rc.width));
}
}
for (RadComponent c : selection) {
if (selectionParent.getLayoutManager().isGrid()) {
if (selection.size() > 1) {
c.getConstraints().setRow(c.getConstraints().getRow() - rc.y);
c.getConstraints().setColumn(c.getConstraints().getColumn() - rc.x);
} else {
c.getConstraints().setRow(0);
c.getConstraints().setColumn(0);
c.getConstraints().setRowSpan(1);
c.getConstraints().setColSpan(1);
}
}
newContainer.addComponent(c);
}
editor.refreshAndSave(true);
}, null, null);
}
use of com.intellij.uiDesigner.palette.Palette in project intellij-community by JetBrains.
the class SurroundAction method update.
protected void update(@NotNull final GuiEditor editor, final ArrayList<RadComponent> selection, final AnActionEvent e) {
FormEditingUtil.remapToActionTargets(selection);
RadContainer selectionParent = FormEditingUtil.getSelectionParent(selection);
Palette palette = Palette.getInstance(editor.getProject());
e.getPresentation().setEnabled(palette.getItem(myComponentClass) != null && (selectionParent != null && ((!selectionParent.getLayoutManager().isGrid() && selection.size() == 1) || isSelectionContiguous(selectionParent, selection)) && canWrapSelection(selection)));
}
use of com.intellij.uiDesigner.palette.Palette in project intellij-community by JetBrains.
the class ComponentTree method getComponentIcon.
public static Icon getComponentIcon(final RadComponent component) {
if (!(component instanceof RadErrorComponent)) {
final Palette palette = Palette.getInstance(component.getProject());
final ComponentItem item = palette.getItem(component.getComponentClassName());
final Icon icon;
if (item != null) {
icon = item.getSmallIcon();
} else {
icon = UIDesignerIcons.Unknown_small;
}
return icon;
} else {
return AllIcons.General.Error;
}
}
use of com.intellij.uiDesigner.palette.Palette in project intellij-community by JetBrains.
the class FirstComponentInsertLocation method processDrop.
@Override
public void processDrop(final GuiEditor editor, final RadComponent[] components, final GridConstraints[] constraintsToAdjust, final ComponentDragObject dragObject) {
RadAbstractGridLayoutManager gridLayout = myContainer.getGridLayoutManager();
if (myContainer.getGridRowCount() == 0 && myContainer.getGridColumnCount() == 0) {
gridLayout.insertGridCells(myContainer, 0, false, true, true);
gridLayout.insertGridCells(myContainer, 0, true, true, true);
}
super.processDrop(editor, components, constraintsToAdjust, dragObject);
Palette palette = Palette.getInstance(editor.getProject());
ComponentItem hSpacerItem = palette.getItem(HSpacer.class.getName());
ComponentItem vSpacerItem = palette.getItem(VSpacer.class.getName());
InsertComponentProcessor icp = new InsertComponentProcessor(editor);
if (myXPart == 0) {
insertSpacer(icp, hSpacerItem, GridInsertMode.ColumnAfter);
}
if (myXPart == 2) {
insertSpacer(icp, hSpacerItem, GridInsertMode.ColumnBefore);
}
if (myYPart == 0) {
insertSpacer(icp, vSpacerItem, GridInsertMode.RowAfter);
}
if (myYPart == 2) {
insertSpacer(icp, vSpacerItem, GridInsertMode.RowBefore);
}
}
use of com.intellij.uiDesigner.palette.Palette in project intellij-community by JetBrains.
the class AddTabAction method actionPerformed.
protected void actionPerformed(final GuiEditor editor, final List<RadComponent> selection, final AnActionEvent e) {
RadTabbedPane tabbedPane = (RadTabbedPane) selection.get(0);
Palette palette = Palette.getInstance(editor.getProject());
final RadComponent radComponent = InsertComponentProcessor.createPanelComponent(editor);
final ComponentDropLocation dropLocation = tabbedPane.getDropLocation(null);
dropLocation.processDrop(editor, new RadComponent[] { radComponent }, null, new ComponentItemDragObject(palette.getPanelItem()));
}
Aggregations