use of com.intellij.uiDesigner.palette.ComponentItem in project intellij-community by JetBrains.
the class AlignProperty method isModified.
@Override
public boolean isModified(final RadComponent component) {
AlignPropertyProvider provider = getAlignPropertyProvider(component);
if (provider != null) {
return provider.isAlignmentModified(component, myHorizontal);
}
final ComponentItem item = component.getPalette().getItem(component.getComponentClassName());
if (item == null)
return false;
return Utils.alignFromConstraints(component.getConstraints(), myHorizontal) != Utils.alignFromConstraints(item.getDefaultConstraints(), myHorizontal);
}
use of com.intellij.uiDesigner.palette.ComponentItem in project intellij-community by JetBrains.
the class MorphAction method actionPerformed.
protected void actionPerformed(final GuiEditor editor, final List<RadComponent> selection, final AnActionEvent e) {
Processor<ComponentItem> processor = selectedValue -> {
Runnable runnable = () -> {
for (RadComponent c : selection) {
if (!morphComponent(editor, c, selectedValue))
break;
}
editor.refreshAndSave(true);
};
CommandProcessor.getInstance().executeCommand(editor.getProject(), runnable, UIDesignerBundle.message("morph.component.command"), null);
IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> {
IdeFocusManager.getGlobalInstance().requestFocus(editor.getGlassLayer(), true);
});
return true;
};
PaletteListPopupStep step = new PaletteListPopupStep(editor, myLastMorphComponent, processor, UIDesignerBundle.message("morph.component.title"));
step.hideNonAtomic();
if (selection.size() == 1) {
step.hideComponentClass(selection.get(0).getComponentClassName());
}
final ListPopup listPopup = JBPopupFactory.getInstance().createListPopup(step);
FormEditingUtil.showPopupUnderComponent(listPopup, selection.get(0));
}
use of com.intellij.uiDesigner.palette.ComponentItem 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.ComponentItem 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.ComponentItem 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);
}
}
Aggregations