class DependantOriginalColorPanel extends javax.swing.JPanel implements ItemListener {

    private DependantOriginalColorPropertyEditor propertyEditor;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton colorButton;
    private javax.swing.JRadioButton customRadio;
    private org.jdesktop.swingx.JXHeader jXHeader1;
    private javax.swing.JRadioButton originalRadio;
    private javax.swing.JRadioButton parentRadio;
    // End of variables declaration//GEN-END:variables

    /**
     * Creates new form DependantOriginalColorPanel
     */
    public DependantOriginalColorPanel() {
        initComponents();
        colorButton.addPropertyChangeListener(JColorButton.EVENT_COLOR, new PropertyChangeListener() {

            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                Color newColor = (Color) evt.getNewValue();
                propertyEditor.setValue(new DependantOriginalColor(newColor));
            }
        });

        originalRadio.addItemListener(this);
        parentRadio.addItemListener(this);
        customRadio.addItemListener(this);
    }

    @Override
    public void itemStateChanged(ItemEvent e) {
        if(e.getStateChange() == ItemEvent.SELECTED) {
            colorButton.setEnabled(customRadio.isSelected());
            DependantOriginalColor.Mode selectedMode = null;
            if (originalRadio.isSelected()) {
                selectedMode = DependantOriginalColor.Mode.ORIGINAL;
            } else if (parentRadio.isSelected()) {
                selectedMode = DependantOriginalColor.Mode.PARENT;
            } else if (customRadio.isSelected()) {
                selectedMode = DependantOriginalColor.Mode.CUSTOM;
            }
            propertyEditor.setValue(new DependantOriginalColor(selectedMode));
        }
    }

    public void setup(DependantOriginalColorPropertyEditor propertyEditor) {
        this.propertyEditor = propertyEditor;
        DependantOriginalColor dependantOriginalColor = (DependantOriginalColor) propertyEditor.getValue();
        if (dependantOriginalColor.getMode().equals(DependantOriginalColor.Mode.CUSTOM)) {
            customRadio.setSelected(true);
            ((JColorButton) colorButton).setColor(dependantOriginalColor.getCustomColor());
        } else if (dependantOriginalColor.getMode().equals(DependantOriginalColor.Mode.ORIGINAL)) {
            originalRadio.setSelected(true);
        } else if (dependantOriginalColor.getMode().equals(DependantOriginalColor.Mode.PARENT)) {
            parentRadio.setSelected(true);
        }
    }

    /**
     * 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
}


        buttonGroup1 = new javax.swing.ButtonGroup();
        jXHeader1 = new org.jdesktop.swingx.JXHeader();
        colorButton = new JColorButton(Color.BLACK, false, true);
        customRadio = new javax.swing.JRadioButton();
        originalRadio = new javax.swing.JRadioButton();
        parentRadio = new javax.swing.JRadioButton();

        jXHeader1.setDescription(org.openide.util.NbBundle.getMessage(DependantOriginalColorPanel.class,
            "DependantOriginalColorPanel.jXHeader1.description")); // NOI18N
        jXHeader1.setTitle(org.openide.util.NbBundle
            .getMessage(DependantOriginalColorPanel.class, "DependantOriginalColorPanel.jXHeader1.title")); // NOI18N

        buttonGroup1.add(customRadio);
        customRadio.setText(org.openide.util.NbBundle
            .getMessage(DependantOriginalColorPanel.class, "DependantOriginalColorPanel.customRadio.text")); // NOI18N

        buttonGroup1.add(originalRadio);
        originalRadio.setText(org.openide.util.NbBundle
            .getMessage(DependantOriginalColorPanel.class, "DependantOriginalColorPanel.originalRadio.text")); // NOI18N

        buttonGroup1.add(parentRadio);
        parentRadio.setText(org.openide.util.NbBundle
            .getMessage(DependantOriginalColorPanel.class, "DependantOriginalColorPanel.parentRadio.text")); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(originalRadio)
                    .addContainerGap(360, Short.MAX_VALUE))
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(parentRadio)
                    .addContainerGap(365, Short.MAX_VALUE))
                .addComponent(jXHeader1, javax.swing.GroupLayout.DEFAULT_SIZE, 435, Short.MAX_VALUE)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(customRadio)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(colorButton)
                    .addContainerGap(326, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jXHeader1, javax.swing.GroupLayout.PREFERRED_SIZE, 77,
                        javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(18, 18, 18)
                    .addComponent(originalRadio)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(parentRadio)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(customRadio)
                        .addComponent(colorButton))
                    .addGap(47, 47, 47))
        );
    
<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