r4fterman/pdf.forms

View on GitHub
src/main/java/org/pdf/forms/gui/toolbars/WidgetAlignmentAndOrderToolbar.java

Summary

Maintainability
A
0 mins
Test Coverage
A
96%
package org.pdf.forms.gui.toolbars;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

import javax.swing.*;

import org.pdf.forms.gui.designer.IDesigner;
import org.pdf.forms.widgets.utils.WidgetAlignmentAndOrder;

import com.vlsolutions.swing.toolbars.VLToolBar;

public class WidgetAlignmentAndOrderToolbar extends VLToolBar {

    private final List<JButton> buttonsList = new ArrayList<>();

    public WidgetAlignmentAndOrderToolbar(final IDesigner designer) {
        final String[] alignButtons = WidgetAlignmentAndOrder.getAlignButtons();
        final String[] layoutButtons = WidgetAlignmentAndOrder.getOrderButtons();

        final String[] buttons = concat(alignButtons, layoutButtons);

        for (final String url : buttons) {
            if (url.equals("Seperator")) {
                addSeparator();
            } else {
                addButton(designer, url);
            }
        }
    }

    private void addButton(
            final IDesigner designer,
            final String url) {
        final String[] splitFilename = url.split("/");
        final String type = splitFilename[splitFilename.length - 1].split("\\.")[0];

        final JButton button = new JButton(new ImageIcon(getClass().getResource(url)));
        button.setToolTipText(type);
        button.addActionListener(e -> WidgetAlignmentAndOrder.alignAndOrder(designer, type));

        buttonsList.add(button);

        add(button);
    }

    private String[] concat(
            final String[] array1,
            final String[] array2) {
        final List<String> list1 = Arrays.asList(array1);
        final List<String> list2 = Arrays.asList(array2);
        return Stream.concat(list1.stream(), list2.stream()).toArray(String[]::new);
    }

    public void setState(final boolean enabled) {
        for (final JButton button : buttonsList) {
            button.setEnabled(enabled);
        }
    }
}