Search in sources :

Example 1 with Palette

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);
}
Also used : ComponentItem(com.intellij.uiDesigner.palette.ComponentItem) Palette(com.intellij.uiDesigner.palette.Palette) GridLayoutManager(com.intellij.uiDesigner.core.GridLayoutManager) GridConstraints(com.intellij.uiDesigner.core.GridConstraints) XYLayoutManager(com.intellij.uiDesigner.shared.XYLayoutManager)

Example 2 with Palette

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)));
}
Also used : Palette(com.intellij.uiDesigner.palette.Palette)

Example 3 with Palette

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;
    }
}
Also used : ComponentItem(com.intellij.uiDesigner.palette.ComponentItem) Palette(com.intellij.uiDesigner.palette.Palette)

Example 4 with Palette

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);
    }
}
Also used : ComponentItem(com.intellij.uiDesigner.palette.ComponentItem) VSpacer(com.intellij.uiDesigner.VSpacer) Palette(com.intellij.uiDesigner.palette.Palette) RadAbstractGridLayoutManager(com.intellij.uiDesigner.radComponents.RadAbstractGridLayoutManager) HSpacer(com.intellij.uiDesigner.HSpacer)

Example 5 with Palette

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()));
}
Also used : Palette(com.intellij.uiDesigner.palette.Palette) RadTabbedPane(com.intellij.uiDesigner.radComponents.RadTabbedPane) RadComponent(com.intellij.uiDesigner.radComponents.RadComponent) ComponentItemDragObject(com.intellij.uiDesigner.designSurface.ComponentItemDragObject) ComponentDropLocation(com.intellij.uiDesigner.designSurface.ComponentDropLocation)

Aggregations

Palette (com.intellij.uiDesigner.palette.Palette)9 ComponentItem (com.intellij.uiDesigner.palette.ComponentItem)4 IntrospectedProperty (com.intellij.uiDesigner.propertyInspector.IntrospectedProperty)3 GridConstraints (com.intellij.uiDesigner.core.GridConstraints)2 RadComponent (com.intellij.uiDesigner.radComponents.RadComponent)2 XYLayoutManager (com.intellij.uiDesigner.shared.XYLayoutManager)2 JBColor (com.intellij.ui.JBColor)1 HSpacer (com.intellij.uiDesigner.HSpacer)1 VSpacer (com.intellij.uiDesigner.VSpacer)1 RecursiveFormNestingException (com.intellij.uiDesigner.compiler.RecursiveFormNestingException)1 GridLayoutManager (com.intellij.uiDesigner.core.GridLayoutManager)1 ComponentDropLocation (com.intellij.uiDesigner.designSurface.ComponentDropLocation)1 ComponentItemDragObject (com.intellij.uiDesigner.designSurface.ComponentItemDragObject)1 IProperty (com.intellij.uiDesigner.lw.IProperty)1 PsiNestedFormLoader (com.intellij.uiDesigner.make.PsiNestedFormLoader)1 BindingProperty (com.intellij.uiDesigner.propertyInspector.properties.BindingProperty)1 IntroStringProperty (com.intellij.uiDesigner.propertyInspector.properties.IntroStringProperty)1 RadAbstractGridLayoutManager (com.intellij.uiDesigner.radComponents.RadAbstractGridLayoutManager)1 RadContainer (com.intellij.uiDesigner.radComponents.RadContainer)1 RadTabbedPane (com.intellij.uiDesigner.radComponents.RadTabbedPane)1