class MASKEdgePanel extends javax.swing.JPanel implements ActionListener {

    private MASKBuilderEdge.MaskEdgeOperator operator;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JRadioButton anyButton;
    private javax.swing.JRadioButton bothButton;
    private javax.swing.ButtonGroup group;
    private javax.swing.JRadioButton sourceButton;
    private javax.swing.JRadioButton targetButton;
    // End of variables declaration//GEN-END:variables

    public MASKEdgePanel() {
        initComponents();
        anyButton.addActionListener(this);
        bothButton.addActionListener(this);
        sourceButton.addActionListener(this);
        targetButton.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (operator != null) {
            MASKBuilderEdge.MaskEdgeOperator.EdgesOptions option = MASKBuilderEdge.MaskEdgeOperator.EdgesOptions.ANY;
            if (bothButton.isSelected()) {
                option = MASKBuilderEdge.MaskEdgeOperator.EdgesOptions.BOTH;
            } else if (sourceButton.isSelected()) {
                option = MASKBuilderEdge.MaskEdgeOperator.EdgesOptions.SOURCE;
            } else if (targetButton.isSelected()) {
                option = MASKBuilderEdge.MaskEdgeOperator.EdgesOptions.TARGET;
            }
            operator.getProperties()[0].setValue(option.toString());
        }
    }

    public void setup(MASKBuilderEdge.MaskEdgeOperator operator) {
        this.operator = operator;
        MASKBuilderEdge.MaskEdgeOperator.EdgesOptions option =
            MASKBuilderEdge.MaskEdgeOperator.EdgesOptions.valueOf(operator.getOption());
        switch (option) {
            case ANY:
                anyButton.setSelected(true);
                break;
            case BOTH:
                bothButton.setSelected(true);
                break;
            case SOURCE:
                sourceButton.setSelected(true);
                break;
            case TARGET:
                targetButton.setSelected(true);
                break;
        }
    }

    /**
     * This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {<FILL_FUNCTION_BODY>}// </editor-fold>//GEN-END:initComponents
}

        java.awt.GridBagConstraints gridBagConstraints;

        group = new javax.swing.ButtonGroup();
        sourceButton = new javax.swing.JRadioButton();
        targetButton = new javax.swing.JRadioButton();
        anyButton = new javax.swing.JRadioButton();
        bothButton = new javax.swing.JRadioButton();

        setLayout(new java.awt.GridBagLayout());

        group.add(sourceButton);
        sourceButton.setText(
            org.openide.util.NbBundle.getMessage(MASKEdgePanel.class, "MASKEdgePanel.sourceButton.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        add(sourceButton, gridBagConstraints);

        group.add(targetButton);
        targetButton.setText(
            org.openide.util.NbBundle.getMessage(MASKEdgePanel.class, "MASKEdgePanel.targetButton.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        add(targetButton, gridBagConstraints);

        group.add(anyButton);
        anyButton.setSelected(true);
        anyButton.setText(
            org.openide.util.NbBundle.getMessage(MASKEdgePanel.class, "MASKEdgePanel.anyButton.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
        add(anyButton, gridBagConstraints);

        group.add(bothButton);
        bothButton.setText(
            org.openide.util.NbBundle.getMessage(MASKEdgePanel.class, "MASKEdgePanel.bothButton.text")); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
        add(bothButton, gridBagConstraints);
    
<methods>public void <init>() ,public void <init>(java.awt.LayoutManager) ,public void <init>(boolean) ,public void <init>(java.awt.LayoutManager, boolean) ,public javax.accessibility.AccessibleContext getAccessibleContext() ,public javax.swing.plaf.PanelUI getUI() ,public java.lang.String getUIClassID() ,public void setUI(javax.swing.plaf.PanelUI) ,public void updateUI() <variables>private static final java.lang.String uiClassID